バイト[]配列のフロート[]ビューを得ます

ブノワ・セガン

私はいくつかのバイナリオブジェクトを持っているbyte[]と私はそれらを変換する必要がありfloat[]、それらにいくつかの計算を実行する前に。

私の現在のアプローチは以下の通りであります:

bytes[] binaryData;
float[] docVector = new float[vectorSize];
ByteBuffer.wrap(binaryData).asFloatBuffer().get(docVector);

これは機能しますが、私の知る限り理解し、それが元の配列のコピーを作成し、それはバイナリ配列の同じメモリアドレスを指しているfloat配列を取得することは可能でしょうか?例えばPythonとnumpyの1缶では、メモリ内の同じデータのビューを取得するために、次の操作を行います。

import numpy as np
binary_data = np.zeros(40, dtype=np.uint8)
float_array = binary_data.view(np.float32)
TALEX:

これは、Javaでは不可能です。

似た何かをする唯一の方法は、私たちにあるフライ級パターン

EDIT

私は間違って名前を「フライ」(@AdrianShumのおかげで)使用しました。私が意味することは、このようなクラスです。

class FloatArray {
    byte[] buff;
    void set(int index, float value) { ... }
    float get(int index) { ... }
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=213413&siteId=1