将字符串放入字节缓冲区Java中的问题

时间:2020-07-20 13:33:04

标签: java android

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

这是我的代码:

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

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

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

new String(buffer.array())

1 个答案:

答案 0 :(得分:2)

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

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

CharBuffer cb = Charset.defaultCharset().decode(buffer);
String str = cb.toString();