gpt4 book ai didi

java - 快速 ByteBuffer 到 CharBuffer 或 char[]

转载 作者:搜寻专家 更新时间:2023-10-31 08:12:48 25 4
gpt4 key购买 nike

java.nio.ByteBuffer a 转换为(新创建的)CharBuffer bchar[] b 的最快方法是什么>.

这样做很重要,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:-128char:128 具有相同的(低 8 位)位。因此,我假设“最佳”解释就是我上面提到的那样,因为这些位是相同的。

在那之后我还需要反之亦然 翻译:The most efficient way to get a char[] or java.nio.CharBuffer回到 java.nio.ByteBuffer

最佳答案

所以,您想要的是使用编码 ISO-8859-1 进行转换。

我对效率没有任何要求,但至少写起来很短:

CharBuffer result = Charset.forName("ISO-8859-1").decode(byteBuffer);

另一个方向是:

ByteBuffer result = Charset.forName("ISO-8859-1").encode(charBuffer);

请将此与其他解决方案进行比较。 (公平地说,不应包含 Charset.forName 部分,并且也应该只执行一次,而不是对每个缓冲区再次执行一次。)

从 Java 7 开始,还有 StandardCharsets具有预实例化的 Charset 实例的类,因此您可以使用

CharBuffer result = StandardCharsets.ISO_8859_1.decode(byteBuffer);

ByteBuffer result = StandardCharsets.ISO_8859_1.encode(charBuffer);

相反。 (这些行与之前的行一样,只是查找更容易,并且没有输入错误名称的风险,也不需要捕获不可能的异常。)

关于java - 快速 ByteBuffer 到 CharBuffer 或 char[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5936275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com