将bytebuffer转换为字符串在java中不起作用
在运行时,我从设备获取字节缓冲数据,我试图解码该数据以读取其内容 当我使用字符串打印bytebuffer时,它显示如下:将bytebuffer转换为字符串在java中不起作用,java,decode,bytebuffer,Java,Decode,Bytebuffer,在运行时,我从设备获取字节缓冲数据,我试图解码该数据以读取其内容 当我使用字符串打印bytebuffer时,它显示如下: java.nio.HeapByteBuffer[pos=0 lim=3 cap=3] CharBuffer charBuffer = StandardCharsets.UTF_8.decode(paramByteBuffer); String text = charBuffer.toString(); System.out.prin
java.nio.HeapByteBuffer[pos=0 lim=3 cap=3]
CharBuffer charBuffer = StandardCharsets.UTF_8.decode(paramByteBuffer);
String text = charBuffer.toString();
System.out.println("UTF-8"+text);
charBuffer = StandardCharsets.UTF_16.decode(paramByteBuffer);
text = charBuffer.toString();
System.out.println("UTF_16"+text);
charBuffer = StandardCharsets.ISO_8859_1.decode(paramByteBuffer);
text = charBuffer.toString();
System.out.println("ISO_8859_1"+text);
charBuffer = StandardCharsets.UTF_16BE.decode(paramByteBuffer);
text = charBuffer.toString();
System.out.println("UTF_16BE"+text);
charBuffer = StandardCharsets.UTF_16LE.decode(paramByteBuffer);
text = charBuffer.toString();
System.out.println("UTF_16LE"+text);
charBuffer = StandardCharsets.US_ASCII.decode(paramByteBuffer);
text = charBuffer.toString();
System.out.println("US_ASCII"+text);
我试着用所有已知的格式解码如下
java.nio.HeapByteBuffer[pos=0 lim=3 cap=3]
CharBuffer charBuffer = StandardCharsets.UTF_8.decode(paramByteBuffer);
String text = charBuffer.toString();
System.out.println("UTF-8"+text);
charBuffer = StandardCharsets.UTF_16.decode(paramByteBuffer);
text = charBuffer.toString();
System.out.println("UTF_16"+text);
charBuffer = StandardCharsets.ISO_8859_1.decode(paramByteBuffer);
text = charBuffer.toString();
System.out.println("ISO_8859_1"+text);
charBuffer = StandardCharsets.UTF_16BE.decode(paramByteBuffer);
text = charBuffer.toString();
System.out.println("UTF_16BE"+text);
charBuffer = StandardCharsets.UTF_16LE.decode(paramByteBuffer);
text = charBuffer.toString();
System.out.println("UTF_16LE"+text);
charBuffer = StandardCharsets.US_ASCII.decode(paramByteBuffer);
text = charBuffer.toString();
System.out.println("US_ASCII"+text);
一切都返回空数据
解码字节缓冲区数据的方法有哪些?您可以执行以下操作:
String val = new String(paramByteBuffer.array());
或
是受支持的字符集列表简单地说就是HeapByteBuffer
的方法
返回总结此缓冲区状态的字符串
换句话说,它会回来
java.nio.HeapByteBuffer[pos=0 lim=3 cap=3]
显示字节缓冲区的位置、限制和容量
在这种情况下,您的
ByteBuffer
的容量可以再增加3个字节。每个Charset#decode
调用都会消耗ByteBuffer
,而您不会/it,因此后续调用不会消耗更多字节。换句话说,所有这些字符串都是空的。缓冲区使用起来有点棘手,因为它们有一个当前状态,在访问它们时需要考虑到这一点
你想把
paramByteBuffer.flip();
在每次解码之前,将缓冲区置于您希望解码读取的状态
e、 g
什么是
parabytebuffer
?它是什么?它是一个字节缓冲区数据,但不确定格式。尽管如此,它只返回一些垃圾符号。你应该预料到这一点。不同的字符集对每个字符都有不同的值。您需要知道数据是用哪个字符集编码的。