将ByteBuffer转换为字节数组java

Pow*_*sss 31 java arrays bytebuffer bytearray

有谁知道如何将ByteBuffer转换为byte []数组?我需要从我的字节数组中获取ByteBuffer.当我运行bytebuffer.hasArrray()它返回否.到目前为止我看到的每个问题都是将字节数组转换为byteBuffer,但我还需要其他方法.谢谢.

nom*_*mis 63

ByteBuffer公开了get(byte[])将缓冲区中的字节传输到数组中的批量方法.您需要实例化一个长度等于缓冲区中剩余字节数的数组.

ByteBuffer buf = ...
byte[] arr = new byte[buf.remaining()];
buf.get(arr);
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记调用`buf.rewind()`,否则`buf.remaining()`将返回不正确的值 (5认同)
  • @SeetharamaniTmr - 字节正在填充到“arr”变量中,而不是返回值。 (3认同)

Ste*_*n C 5

如果hasArray()报告false然后,调用array()将抛出异常。

在这种情况下,获取 a 中数据的唯一方法byte[]是分配 abyte[]并将字节复制到byte[]usingget(byte)或类似的。