JavaScript typed arrays are array-like objects and provide a mechanism for accessing raw binary data.
存儲是用 ArrayBuffer
(字節(jié)存儲buffer)崩哩,初始化必須指定大小,不可再改動長度肩民,同時也不可訪問其中的值籍茧,因為它僅僅是一種存儲buffer徽龟,需要對應(yīng)的view才能解析并讀取;
view有好幾種讲冠,明確類型的比如UInt8Array,Float32Array等等,底層的統(tǒng)一的DataView(有setUInt,setFloat32等方法)适瓦; 其中DataView存在很重要的意思是在更底層定義字節(jié)排列的順序(查看編碼)竿开;其中字符串可以使用charCodeAt
轉(zhuǎn)成數(shù)字(本質(zhì)上字符也是數(shù)字存儲,bit只有0,1),但需要注意玻熙,字符是有2個字節(jié)表示
typed array與普通數(shù)組的轉(zhuǎn)換
var typedArray = new Uint8Array([1, 2, 3, 4]),
normalArray = Array.prototype.slice.call(typedArray);
normalArray.length === 4;
normalArray.constructor === Array;
UInt8Array與UInt8ClampedArray
注意否彩,其中 Clamp采用的是銀行家舍入算法, UInt8ClampedArray最常用的場景用于 ImageData嗦随;
使用場景
圖片列荔,ajax敬尺, imageData,SaveFile贴浙;
還有例如:
new Image().src = new Blob([arraybuffer],{type:'image/png'});