微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将“ java.nio.HeapByteBuffer”转换为字符串

我有一个数据结构java.nio.HeapByteBuffer [pos = 71098 lim = 71102 cap = 94870],我需要将其转换为Int(在Scala中),转换看起来很简单,但是无论我采用哪种方法,我都无法正确完成转换.请你帮助我好吗?

这是我的代码段:

val v : ByteBuffer= map.get("company").get
val utf_str = new String(v, java.nio.charset.StandardCharsets.UTF_8)
println (utf_str)

输出只是“ R”?

解决方法:

我什至看不到如何编译它,String的构造函数接受另一个字符串或可能的数组,但不接受ByteBuffer或其任何父级.

要使用nio缓冲区api,您首先要写入缓冲区,然后在从缓冲区读取之前进行一次翻转,在线上有很多不错的资源.例如:http://tutorials.jenkov.com/java-nio/buffers.html

如何将其作为字符串完全读取取决于缓冲区中字符的编码方式,如果每个字符两个字节(如Java / JVM中的字符串),则可以使用asCharBuffer将缓冲区转换为字符缓冲区.

因此,例如:

val byteBuffer = ByteBuffer.allocate(7).order(ByteOrder.BIG_ENDIAN);
byteBuffer.putChar('H').putChar('i').putChar('!')
byteBuffer.flip()
val charBuffer = byteBuffer.asCharBuffer
assert(charBuffer.toString == "Hi!")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐