从 netty ByteBuf 获取字符串

Getting string from netty ByteBuf

如何从 netty ByteBuf 中获取字符串?截至目前,我能够逐个字符地获取它。有没有办法直接获取字符串对象?

// message is of type ByteBuf
for (int i = 0; i < message.capacity(); i++) {
    byte b = message.payload().getByte(i);
    System.out.print((char) b);
}

Take a look at this

从那里你可以使用 new String(byte[]) 或一些 Base64 解决方案(因为我假设它是二进制数据)

使用提供的方法ByteBuf.toString(Charset)

使用ByteBuf.readCharSequence()

示例在这里:

// here we use utf-8 decoding, you can choose the charset you want
String s = ByteBuf.readCharSequence(length, Charset.forName("utf-8")).toString()

注意ByteBuf.readCharSequence() returns java.lang.CharSequence,使用toString()得到String obejct