什么是将java.nio.ByteBuffer a
转换为(新创建的)CharBuffer b
或char[] b
的最快方法。Fast ByteBuffer to CharBuffer or char []
通过这样做很重要,即a[i] == b[i]
。这意味着,不是a[i]
和a[i+1]
一起构成价值b[j]
,什么getChar(i)
会做,但值应该是“传播”。
byte a[] = { 1,2,3, 125,126,127, -128,-127,-126 } // each a byte (which are signed)
char b[] = { 1,2,3, 125,126,127, 128, 129, 130 } // each a char (which are unsigned)
注意byte:-128
具有相同的(低级8)位作为char:128
。因此,我认为“最好”的解释将如我上面所述,因为这些位是相同的。
之后,我还需要反之亦然翻译:最有效的方式来获得char[]
或java.nio.CharBuffer
回到一个java.nio.ByteBuffer
。
你想用这个字符缓冲区做什么?如果你输入一个2字节的字符会发生什么?翻译后的字节数组应该如何显示?根据你的需要,最有效的方法可能是不转换。 – Ishtar 2011-05-09 12:06:21
换句话说,您正在寻找将ByteBuffer的内容解释为使用ISO-8859-1编码的字符序列? – Anon 2011-05-09 12:34:54
假设是,'char []'缓冲区中没有大于'0xff'的值来进行反向转换。任何行为/崩溃都可以(“未指定”)。 ISO-8859-1?据我所知,有些字节不能被任何代码页翻译(例如'\ 0')?我认为,如果转储8位数据流,许多代码转换库不会很好地处理它。但我不了解Java,我会查找它。想象一下,我有图片/图像数据。 – towi 2011-05-09 12:49:25