Java ByteBuffer转换为字符串

这是将ByteBuffer转换为String的正确方法吗?

String k = "abcd";

ByteBuffer b = ByteBuffer.wrap(k.getBytes());

String v = new String(b.array());

if(k.equals(v))

System.out.println("it worked");

else

System.out.println("did not work");

我问的原因是,这看起来太简单了,而其他方法,例如Java:在ByteBuffer和ByteBuffer之间来回转换字符串以及相关的问题看起来却更加复杂。

回答:

@xinyongCheng编辑的同级答案是一种更简单的方法,应该被接受。

如果您知道字节在平台的默认字符集中,则您的方法将是合理的。在您的示例中,这是正确的,因为k.getBytes()返回平台默认字符集中的字节。

更常见的是,您需要指定编码。但是,有一种比链接的问题更简单的方法。String API提供了以特定编码在String和byte

[]数组之间转换的方法。这些方法建议 “当需要对解码[encoding]过程进行更多控制时, 使用CharsetEncoder /

CharsetDecoder ”。

要以特定编码从字符串中获取字节,可以使用同级的getBytes()方法:

byte[] bytes = k.getBytes( StandardCharsets.UTF_8 );

要将具有特定编码的字节放入String中,可以使用其他String构造函数:

String v = new String( bytes, StandardCharsets.UTF_8 );

请注意,这ByteBuffer.array()是可选操作。如果您使用数组构造了ByteBuffer,则可以直接使用该数组。否则,如果您想安全起见,可使用ByteBuffer.get(byte[]dst, int offset, int length)将该字节从缓冲区中获取到字节数组中。

以上是 Java ByteBuffer转换为字符串 的全部内容, 来源链接: utcz.com/qa/417474.html

回到顶部