如何将“ 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!")

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...