ArrayBuffer
JavaScriptでバイナリを扱う
buffer
物理メモリの領域
ArrayBuffer はバイナリデータでデータがずらーっと並んでるようなものです
UintXXArray は ArrayBuffer を決まったバイト数で配列に格納してプログラムで扱えるようにしたものです ref
docs
リニアなメモリをJS上で表現するためのしくみ
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer
メモリ領域の確保
引数は確保したいバイナリの長さ
指定した長さのメモリ空間がバイナリを保存するために確保される
code:js
const buf = new ArrayBuffer(30);
メモリ領域に対して操作を行う
以下のいずれかを使う
TypeArray
DataView
Typed Array
docs
型付き配列
通常のArrayと同じように扱える
これを使うことでArrayBuffer()で確保したメモリ空間へアクセスできる
code:js
const buf = new ArrayBuffer(10);
const view = new Uint8Array(buf);
view0 = 0x12; // bufの0番目に書き込む
console.log(view)
18, 0, 0, 0, 0, 0, 0, 0, 0, 0;
高速に読み書き可能
種類
Uint8Array
Float32Array
etc.
DataView
docs
TypedArrayよりも高機能なバッファ操作用クラス
用途
画像処理
CanvasのImageData
関連
SharedArrayBuffer
参考
ArrayBuffer - JavaScript | MDN
JavaScript 型付き配列 - JavaScript | MDN
DataView - JavaScript | MDN
JSのArrayBufferがよくわからなかったのでほんの少しだけ調べた - はらへり日記
ArrayBufferについて調べてみた - Qiita
Blob, ArrayBuffer, Uint8Array, DataURI の変換