当我将一个字符串放入字节缓冲区时,它会向其中添加一些未知字符。
这是我的代码:
String request="HELLO";
ByteBuffer buffer=ByteBuffer.allocate(1024);
buffer.clear();
buffer.put(request.getBytes());
buffer.flip();
当我将其转换为字符串时,会得到以下结果:HELLO��������
我将ByteBuffer转换为字符串的方式如下:
new String(buffer.array())
答案 0 :(得分:2)
在创建字符串时,您没有考虑缓冲区中只有某些字节具有有效数据。前5个字节包含以某种形式编码的“ hello”,其余字节用零填充。
要将字节缓冲区转换为字符串,请使用Charset类:
CharBuffer cb = Charset.defaultCharset().decode(buffer);
String str = cb.toString();