docs: public static String readString(ByteBuffer buf) {
          if(buf.get() == 0)
              return null;
          int len=readInt(buf);
          if(buf.isDirect()) {
              byte[] bytes=new byte[len];
              buf.get(bytes);
              return new String(bytes);
          }
          else {
              byte[] bytes=buf.array();
              return new String(bytes, buf.arrayOffset() + buf.position(), len);
          }
      }