JSにおけるArrayBufferとUIT 8 A rrayの違い

2236 ワード

1.一般的なjs配列
var arr = new Array(5)

2.タイプ化配列TypedArray
  • Javascriptの配列の強さと全能は、私たちに便利さをもたらしました.
  • 全能のものは様々な環境で使用できるが、必ずしも様々な環境に適用されるとは限らない.
  • 従ってhtml 5バージョンをカスタマイズする際に、TypedArrayは、WEB仕様において、Javascriptがバイナリデータを処理する問題を解決するために導入される.

  • (タイプ化配列も配列ですが、要素は特定のタイプの値に設定されています)
    2.1型化配列ArrayBuffer
    タイプ化配列のコアはArrayBufferというタイプです
  • 各ArrayBufferオブジェクトは、メモリに指定されたバイト数のみを表す.
  • しかし、これらのバイトがどのタイプのデータを保存するかは指定されません.
  • ArrayBufferでできることは、将来使用するために一定数のバイトを割り当てることである.
  • //     8-byte ArrayBuffer
    var b = new ArrayBuffer(8);
    
    //     b   ,   Int32,     0,          
    var v1 = new Int32Array(b);
    
    //     b   ,   Uint8,     2,          
    var v2 = new Uint8Array(b, 2);
    
    //     b   ,   Int16,     2,    2
    var v3 = new Int16Array(b, 2, 2);

    ArrayBufferは複数のタイプのデータを格納できますが、異なるタイプの格納方法はDataViewです.
    2.2配列バッファビューDataView
  • ArrayBuffer(配列バッファタイプ)を使用する特別な方法は、配列バッファビューを作成することである.
  • では、最も一般的なビューはDataViewであり、ArrayBufferの小さなバイトを選択することができます.

  • このため、
  • は、DataViewインスタンスを作成するときに、ArrayBuffer、オプションのバイトオフセット(バイトから選択)、およびオプションの選択するバイト数を入力することができる.

  • DataViewのタイプは次のとおりです.
  • Int 8 A rray:8ビット符号整数、長さ1バイト.
  • UIT 8 rray:8ビット符号なし整数、長さ1バイト.
  • Int 16 Array:16ビット符号付き整数、長さ2バイト.
  • UIT 16 Array:16ビット符号なし整数、長さ2バイト.
  • Int 32 Array:32ビット符号整数、長さ4バイト.
  • UIT 32 Array:32ビット符号なし整数、長さ4バイト.
  • Float 32 Array:32ビット浮動小数点数、長さ4バイト.
  • Float 64 Array:64ビット浮動小数点数、長さ8バイト.

  • タイプ化ビューは、要素が特定のデータ型である必要がある以外は、通常の配列と変わらないため、一般的にタイプ化配列とも呼ばれます.また、DataViewは継承されています.
    ArrayBufferオブジェクトは、メモリを読み書きする方法を提供しません.その上に「ビュー」を設定して、メモリ内のデータを挿入して読み込むことができます.
    https://blog.csdn.net/hunhun1122/article/details/82995787
     
    ArrayBuffer
    UIT 8 rray配列
    コンテンツの保存
    0と1からなるバイナリデータを入れる
    数値、文字列、ブール値、オブジェクトや配列などを配置します.
    きおくいち
    データはスタックに格納されます(したがって、データの取得が速い)
    山の中に置く
    ストレージ・サイズ
    初期化後の固定サイズ
    配列は自由に増減できる
    var arraybuffer = new ArrayBuffer(8);//    ,       
    ArrayBuffer.length;  // 1
    arraybuffer.byteLength;  // 8
    
    var int8a = new Int8Array(arraybuffer);//   ArrayBuffer.isView()          
    ArrayBuffer.isView(int8a)  //return true