将 CharBuffer 转换为 ByteBuffer
Convert CharBuffer to ByteBuffer
使用 ByteBuffer.asCharBuffer()
很容易将 ByteBuffer
转换为 CharBuffer
。
我怎么去另一个方向?
有没有比ByteBuffer Charset.encode(CharBuffer cb)
更简单的方法?
CharBuffer
将其数据存储在内部 char[]
而不是 byte[]
因此没有底层 byte[]
所以应该没有更简单的方法。
这是一个建议。
CharBuffer yourCharBuffer = CharBuffer.wrap("Roland");
ByteBuffer result = ByteBuffer.allocate(yourCharBuffer.length() * Character.BYTES);
CharBuffer converter = result.asCharBuffer();
converter.append(yourCharBuffer);
System.out.println(Arrays.toString(result.array()));
上面的代码片段打印:
[0, 82, 0, 111, 0, 108, 0, 97, 0, 110, 0, 100]
我正在获取同时支持 converter
CharArray
和 result
ByteArray
的字节数组。这是我能达到的最接近你的要求。我可能遗漏了一些东西。
编辑:按照@Marcono1234 在评论中的建议,我正在使用ByteBuffer.allocate(yourCharBuffer.length() * Character.BYTES)
分配正确大小的缓冲区。
如果填充原始 CharBuffer
的代码可以改为填充支持的字节缓冲区 CharBuffer
,它可能会更简单一些。
你自己的建议 Charset.encode(CharBuffer)
更简单。
使用 ByteBuffer.asCharBuffer()
很容易将 ByteBuffer
转换为 CharBuffer
。
我怎么去另一个方向?
有没有比ByteBuffer Charset.encode(CharBuffer cb)
更简单的方法?
CharBuffer
将其数据存储在内部 char[]
而不是 byte[]
因此没有底层 byte[]
所以应该没有更简单的方法。
这是一个建议。
CharBuffer yourCharBuffer = CharBuffer.wrap("Roland");
ByteBuffer result = ByteBuffer.allocate(yourCharBuffer.length() * Character.BYTES);
CharBuffer converter = result.asCharBuffer();
converter.append(yourCharBuffer);
System.out.println(Arrays.toString(result.array()));
上面的代码片段打印:
[0, 82, 0, 111, 0, 108, 0, 97, 0, 110, 0, 100]
我正在获取同时支持 converter
CharArray
和 result
ByteArray
的字节数组。这是我能达到的最接近你的要求。我可能遗漏了一些东西。
编辑:按照@Marcono1234 在评论中的建议,我正在使用ByteBuffer.allocate(yourCharBuffer.length() * Character.BYTES)
分配正确大小的缓冲区。
如果填充原始 CharBuffer
的代码可以改为填充支持的字节缓冲区 CharBuffer
,它可能会更简单一些。
你自己的建议 Charset.encode(CharBuffer)
更简单。