私は別の関数から受け取ったオフセットを持つUint8Arrayを持っています。これには必要なデータが含まれていますが、この型付き配列をバッキングしているバッファの先頭には少しのものがあります。Uint8Arrayをオフセット付きでInt32Arrayに変換するにはどうすればよいですか?
実際のデータは32ビットの整数なので、そのデータをInt32Arrayに入れたいと思います。
var outputBuffer = new ArrayBuffer(data.length);
var inputByteArray = new Uint8Array(outputBuffer);
for (var i=0; i < data.length; ++i) {
inputByteArray[i] = data[i]
}
var outputInt32Array= new Int32Array(outputBuffer);
ちょうど新しいInt32Arrayを作成し、Uint8Arrayが動作しないソースを渡す簡単な方法:
をしかし、これは簡単ではないようです変換、私は現在、次のように手動でそれをやっていますvar outputInt32Array = new Int32Array(data) // data is the Uint8Array with offset
この結果、Uint8Arrayのように動作し、32ビット整数ではなく個々のバイトが引き渡されます。 、私はエラーを取得する動作しません。また、オフセットに渡すことで、それをしようと
var outputInt32Array = new Int32Array(data.buffer, data.byteOffset, length)
を手動でのみ、各バイトをコピーしている:「例外RangeErrorは:Int32Arrayの開始オフセットは4の倍数でなければなりません」 Int8ArrayをInt8Arrayからオフセットで取得する方法はありますか?
Btwは、 'new Int32Array(data)'を実行すると、 'Uint8'を' data'から 'Int32'に読み込みます。すなわち、バッファのサイズを4倍にします。 – Bergi