0

FloatBuffer配列をバイト配列に変換する方法を探していました。FloatBufferオブジェクトをbyte[]に変換する方法を見つけました: floatbufferからbyte[]に変換します

しかし、インターネットを数時間検索した後、FloatBuffer[]から変換するのに相当するものを見つけることができませんでした。

そして、逆を行うために、byte[]からFloatBuffer[]に変換するために、私はこれだけを見つけました:

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

しかし、これを行うためのより簡単な方法がないのは少し奇妙に思えます。多分私は非常に明白な何かを見逃しているかもしれません、多分私はFloatBuffer配列をバイト配列に変換するのがより簡単な他のタイプに変換する必要がありますか?

4

3 に答える 3

3

1つ FloatBuffer、または複数が必要ですか?

からに変換するFloatBufferにはbyte[]、次のようなことを行うことができます

 FloatBuffer input;
 byte[] output = new byte[input.capacity() * 4];
 ByteBuffer.wrap(output).asFloatBuffer().put(input);

他の方向はただ

 ByteBuffer.wrap(byteArray).asFloatBuffer()
于 2013-02-28T04:05:41.367 に答える
1

1つをバイト配列に変換する方法についてはすでに答えがあります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-28T04:25:36.973 に答える
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();
于 2013-02-28T05:14:43.100 に答える