我一直在寻找一种将FloatBuffer数组转换为字节数组的方法。我找到了一种将FloatBuffer对象转换为byte []的方法: convert from floatbuffer to byte[]
但是在互联网上搜索了好几个小时后,我找不到与FloatBuffer []转换相当的内容。
要做反过来,要从byte []转换为FloatBuffer [],我只发现了这个:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(floatBufferObject);
byte [] descriptorsBytes = bos.toByteArray();
但似乎有点奇怪,没有一种更简单的方法可以做到这一点。 也许我错过了一些非常明显的东西,也许我应该将FloatBuffer数组转换为更容易转换为字节数组的其他类型?
答案 0 :(得分:2)
您想要一个 FloatBuffer
还是多个?
要从FloatBuffer
转换为byte[]
,您可以执行类似
FloatBuffer input;
byte[] output = new byte[input.capacity() * 4];
ByteBuffer.wrap(output).asFloatBuffer().put(input);
另一个方向就是
ByteBuffer.wrap(byteArray).asFloatBuffer()
答案 1 :(得分:0)
您已经有了如何将一个FloatBuffer
转换为字节数组的答案,所以只需将其扩展为转换它们的数组:
final FloatBuffer[] floatBuffers = new FloatBuffer[] {...};
final ByteBuffer byteBuffer = ByteBuffer.allocate(sumOfFloatBufferCapacities) * 4);
final FloatBuffer floatBufView = byteBuffer.asFloatBuffer();
for (final FloatBuffer fBuf : floatBuffers) {
floatBufView.put(fBuf);
}
byte[] data = byteBuffer.array();
以上是伪代码,您可以根据自己的需要进行调整。
答案 2 :(得分:0)
将FloatBuffer []转换为byte []:
FloatBuffer[] buffers = ...
ByteArrayOutputStream bos = new ByteArrayOutputStream();
for (FloatBuffer fb : buffers) {
ByteBuffer byteBuffer = ByteBuffer.allocate(fb.capacity() * 4);
byteBuffer.asFloatBuffer().put(fb);
bos.write(byteBuffer.array());
}
byte[] ba = bos.toByteArray();