-2

当我将字符串放入字节缓冲区时,它会向其中添加一些未知字符。

这是我的代码:

String request="HELLO";
ByteBuffer buffer=ByteBuffer.allocate(1024);
buffer.clear();
buffer.put(request.getBytes());
buffer.flip();

当我将它转换为字符串时,我得到以下结果:HELLO��������

我将 ByteBuffer 转换为字符串的方式如下:

new String(buffer.array())
4

1 回答 1

2

创建字符串时,您没有考虑到缓冲区中只有一些字节具有有效数据。前 5 个字节包含以某种形式编码的“hello”,其余字节用零填充。

要将字节缓冲区转换为字符串,请使用Charset类:

CharBuffer cb = Charset.defaultCharset().decode(buffer);
String str = cb.toString();
于 2020-07-20T13:45:25.770 回答