JavaScript バイナリファイルを読み込む - Why it doesn't work?
続きです。やりたいことは、バイナリの配列から4バイトを抜きだしてunsigned long(uint32)型の数値として扱いたいといことです。
DataViewを使用します。DataViewはバイナリデータのバッファ(ArrayBuffer)に含まれている数値型を制御するためのオブジェクトで、DataViewを使用するメリットとしては、エンディアンの指定が出来ることです。
var bytes = [232, 150 ,251 ,90]; var dv = new DataView(Uint8Array.from(bytes ).buffer); var value= dv.getUint32(0, true); console.log(value);
getUint32メソッドの第二引数がtrueの場合に、リトルエンディアンとして扱われます。
結果は、
1526437608
となります。
falseを指定すると、ビッグエンディアンとして扱われ、結果は、
3902208858
となります。
なお、配列が4バイト以下の場合にはエラーが発生するので注意してください。
Uncaught RangeError: Offset is outside the bounds of the DataView
さらに文字列に変更してみました。
zakiyamatakashi.hatenablog.com