将FloatBuffer []转换为byte []

时间:2013-02-28 04:02:29

标签: java bytearray byte floatbuffer

我一直在寻找一种将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数组转换为更容易转换为字节数组的其他类型?

3 个答案:

答案 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();