将 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 CharArrayresult ByteArray 的字节数组。这是我能达到的最接近你的要求。我可能遗漏了一些东西。

编辑:按照@Marcono1234 在评论中的建议,我正在使用ByteBuffer.allocate(yourCharBuffer.length() * Character.BYTES) 分配正确大小的缓冲区。

如果填充原始 CharBuffer 的代码可以改为填充支持的字节缓冲区 CharBuffer,它可能会更简单一些。

你自己的建议 Charset.encode(CharBuffer) 更简单。