Java 如何从ByteBuffer读取数据

Java 如何从ByteBuffer读取数据,java,bytebuffer,Java,Bytebuffer,如何读取存储在ByteBuffer中的数据 setValue—获取值12 10,并将其转换为十六进制值,存储在字符串[]数据中。 写入-将数据转换为字节并存储在ByteBuffer dest中。 readBuffer-如何从ByteBuffer读取数据? 静态字符串[]数据={}; //数值=12 10; 字符串设置值字符串值{ String[]samples=value.split[,\n]+; 数据=新字符串[samples.length]; //生成十六进制值 对于int i=0;i

如何读取存储在ByteBuffer中的数据

setValue—获取值12 10,并将其转换为十六进制值,存储在字符串[]数据中。 写入-将数据转换为字节并存储在ByteBuffer dest中。 readBuffer-如何从ByteBuffer读取数据? 静态字符串[]数据={}; //数值=12 10; 字符串设置值字符串值{ String[]samples=value.split[,\n]+; 数据=新字符串[samples.length]; //生成十六进制值 对于int i=0;i可以使用.array获取ByteBuffer的支持数组。如果要将其转换为字符串,还需要获取当前位置,否则末尾将有大量零字节。因此,您将得到如下代码:

new String(buf.array(), 0, buf.position())

编辑:哦,看起来你想要字节值。您可以通过调用Arrays.tostringrays.copyOfbuf.array,0,buf.position或从0到buf.position的循环x调用Integer.toStringintbuf.getx&0xFF,16来获得一个2位十六进制代码,并在StringBuilder中收集结果。

读过它的文档吗?这是输入:String dataValue=12 10;它被转换为十六进制,如0x0c、0x0a,并添加到数组字符串[]数据中,然后添加到ByteBuffer中,如dest.putdata[i].getBytes。现在我需要编写一个函数来读取ByteBuffer dest并返回输出0x0c,0x0a。有人能建议一下怎么做吗?我把所有的东西都打印在一行中,显示为0x0C0A,是否可以输出为0x0c,0x0a。感谢system.out.println Arrays.tostringrays.copyOfdest.array、dest.position;正在返回[481204899481204897],看起来像是ASCI值。但我希望输出为0x0c,0x0a。是否有可能得到此值?是的,这是对值进行循环并调用Integer.toStringintbuf.getx&0xFF,每个值16,然后可能使用分隔符和前缀“0x”添加到StringBuilder中。您的目标是哪个java版本?java 1.8。现在看来我做了完全错误的事情。我的主要需求是获取十六进制格式的字节值序列并将其写入字节流。01 02 1a=>将字节0x01 0x02 0x1a写入字节流。我显然不明白需要做什么这只是打印出很多0
destValue.rewind() 
while (destValue.hasRemaining())
     System.out.println((char)destValue.get());
}