我一直在寻找一种将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数组转换为其他更容易转换为字节数组的类型?
发布于 2013-02-28 12:25:37
对于如何将一个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();上面的代码是伪代码,你可以根据你的需要进行修改。
发布于 2013-02-28 12:05:41
你想要一个FloatBuffer还是多个?
要将FloatBuffer转换为byte[],可以执行以下操作
FloatBuffer input;
byte[] output = new byte[input.capacity() * 4];
ByteBuffer.wrap(output).asFloatBuffer().put(input);另一个方向就是
ByteBuffer.wrap(byteArray).asFloatBuffer()发布于 2013-02-28 13:14:43
将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();https://stackoverflow.com/questions/15127256
复制相似问题