将ByteBuffer转换为字节数组java
有人知道如何将ByteBuffer转换为byte[]数组吗?我需要从我的将ByteBuffer转换为字节数组java,java,arrays,bytebuffer,Java,Arrays,Bytebuffer,有人知道如何将ByteBuffer转换为byte[]数组吗?我需要从我的ByteBuffer中获取字节数组。当我运行bytebuffer.hasArray()时,它返回否。到目前为止,我看到的每个问题都是将字节数组转换为bytebuffer,但我需要它的另一种方式。 谢谢。如果hasArray()报告false则调用array()将引发异常 在这种情况下,获取byte[]中数据的唯一方法是分配byte[]并使用get(byte)或类似方法将字节复制到byte[]中。ByteBuffer公开将字节
ByteBuffer
中获取字节数组。当我运行bytebuffer.hasArray()
时,它返回否。到目前为止,我看到的每个问题都是将字节数组转换为bytebuffer,但我需要它的另一种方式。
谢谢。如果hasArray()
报告false
则调用array()
将引发异常
在这种情况下,获取
byte[]
中数据的唯一方法是分配byte[]
并使用get(byte)
或类似方法将字节复制到byte[]
中。ByteBuffer
公开将字节从缓冲区传输到数组中的批量get(byte[])
方法。您需要实例化一个长度等于缓冲区中剩余字节数的数组
ByteBuffer buf = ...
byte[] arr = new byte[buf.remaining()];
buf.get(arr);
您是否尝试过byteBuffer.array()?@JohnnyWiller-它将失败。。。hasArray正在返回
false
。是的,我返回了,但没有成功。确定。。我认为nomis的答案会起作用:)只有代码的anwers通常会通过添加一些文本来解释代码在做什么来改进-你能添加一些文本来解释OP吗?别忘了调用buf.rewind()
,否则buf.remaining()
将返回不正确的值hi,buf.get(arr)仍然返回ByteBuffer,还有其他选择吗?这不是将ByteBuffer转换为字节数组。它仍然返回ByteBuffer。@请参见Tharamanitmr-字节正在填充到“arr”变量中,而不是返回值。