類型化數組


類型化數組是javascript操作(內存)二進制數據的一個接口。

類型化數組是建立在ArrayBuffer對象的基礎上的。它的作用是,分配一段可以存放數據的連續內存區域。


var buf = new ArrayBuffer(32); //生成一段32字節的內存區域,即變量buf在內存中占了32字節大小

ArrayBuffer對象的byteLength屬性,返回所分配的內存區域的字節長度。

buf.byteLength //32

如果要分配的內存區域很大,有可能分配失敗(因為沒有那么多的連續空余內存),所以有必要檢查是否分配成功。
if (buffer.byteLength === n) {
  // 成功
} else {
  // 失敗
}


ArrayBuffer作為內存區域,可以存放多種類型的數據。不同數據有不同的存儲方式,這就叫做“視圖”。目前,JavaScript提供以下類型的視圖
Int8Array:8位有符號整數,長度1個字節。
Uint8Array:8位無符號整數,長度1個字節。
Int16Array:16位有符號整數,長度2個字節。
Uint16Array:16位無符號整數,長度2個字節。
Int32Array:32位有符號整數,長度4個字節。
Uint32Array:32位無符號整數,長度4個字節。
Float32Array:32位浮點數,長度4個字節。
Float64Array:64位浮點數,長度8個字節。

每一種視圖都有一個BYTES_PER_ELEMENT常數,表示這種數據類型占據的字節數
int8Array.BYTES_PER_ELEMENT // 1
Int16Array.BYTES_PER_ELEMENT // 2

生成視圖有兩種方法:
1,在ArrayBuffer對象上生成
// 創建一個8字節的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);

2,直接生成
var v4 = new Int32Array(3); //創建一個數組長度為3的類型化數組
v4.length // 3;
v4.byteLength //12 變量v4占12字節的內存大小 ;一個32位數字占4個字節,該數組共有3個元素所以是4*3等於12

原文出處:http://blog.csdn.net/lichwei1983/article/details/43893025


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM