java - 将 CharBuffer 转换为 ByteBuffer

标签 java character-encoding buffer

使用 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]

我正在获取同时支持转换器 CharArray结果 ByteArray 的字节数组。这是我能达到的最接近您的要求。我可能遗漏了一些东西。

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

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

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

关于java - 将 CharBuffer 转换为 ByteBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42413463/

相关文章:

java - 类方法与实例方法

character-encoding - 如何让Protege 4.3正确显示汉字?

java - Apache POI 从文件读取时抛出编码错误,但从 Stream 读取时不会抛出编码错误

java - 关于适配器模式应用于 Java 中 Swing 事件的一些说明

java - 在 Openshift 上运行 Java 应用程序

C++,使用 Ctrl+C 携带存储语句的缓冲区

将 int 复制到 Char 数组

c++ - 最大缓冲区数

java - Android开发/LibGDX运行时没有窗口打开

encoding - 如何强制 Mailgun 通过 API (php) 使用 base64 编码发送电子邮件?