我一直在寻找一种将FloatBuffer数组转换为字节数组的方法。我找到了一种将FloatBuffer对象转换为byte []的方法:
convert from floatbuffer to byte[]

但是,在Internet上搜索了几个小时之后,我仍然找不到与FloatBuffer []相同的东西。

反之,将byte []转换为FloatBuffer [],我只发现了这一点:

ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(floatBufferObject);
byte [] descriptorsBytes = bos.toByteArray();


但是似乎没有什么简单的方法可以做到这一点。
也许我遗漏了一些非常明显的东西,也许我应该将FloatBuffer数组转换为更易于转换为字节数组的其他类型?

最佳答案

您已经有了关于如何将一个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();


以上是伪代码,您可以根据需要进行调整。

10-06 16:10