直接从ByteBuffer转到String但没有中间字节[]?

时间:2016-04-11 13:28:57

标签: java bytebuffer

是否有一种方法可以避免必须使用ByteBuffer.get()操作从ByteBuffer复制byte []。

我正在看这篇文章Java: Converting String to and from ByteBuffer and associated problems

这会导致我不想要的中间CharBuffer。

我希望它从ByteBuffer转到String。

当我知道我有一个字节[]底层时,这很容易使用像这样的代码

new String(data, offset, length, charSet);

我希望与ByteBuffer有类似的东西。我开始认为这可能不可能吗?我需要真正解码我的ByteBuffer的N个字节。

这可能是一些过早的优化,但我真的很好奇,想要测试性能并挤出一点点。 (个人项目真的)。

感谢, 迪安

1 个答案:

答案 0 :(得分:2)

不是直接ByteBuffer,不是。你需要有中间的东西,因为String没有ByteBuffer作为构造函数参数,你不能包装一个(甚至是char[])。如果缓冲区是非直接的,您可以使用array()方法获取对后备阵列的引用(它不是一个中间数组)并从中创建String。 / p>

从好的方面来说,你的项目可能会有更多对性能敏感的地方。