js的arraybuffer等数组化类型以及视图

JavaScript typed arrays are array-like objects and provide a mechanism for accessing raw binary data.

存储是用 ArrayBuffer (字节存储buffer),初始化必须指定大小,不可再改动长度,同时也不可访问其中的值,因为它仅仅是一种存储buffer,需要对应的view才能解析并读取;
view有好几种,明确类型的比如UInt8Array,Float32Array等等,底层的统一的DataView(有setUInt,setFloat32等方法); 其中DataView存在很重要的意思是在更底层定义字节排列的顺序(查看编码);其中字符串可以使用charCodeAt转成数字(本质上字符也是数字存储,bit只有0,1),但需要注意,字符是有2个字节表示

typed array与普通数组的转换

var typedArray = new Uint8Array([1, 2, 3, 4]),
    normalArray = Array.prototype.slice.call(typedArray);
normalArray.length === 4;
normalArray.constructor === Array;

UInt8Array与UInt8ClampedArray

js的arraybuffer等数组化类型以及视图_第1张图片
Clamped的对比.png

注意,其中 Clamp采用的是 银行家舍入算法, UInt8ClampedArray最常用的场景用于 ImageData;

使用场景

图片,ajax, imageData,SaveFile;
还有例如:

new Image().src = new Blob([arraybuffer],{type:'image/png'});

你可能感兴趣的:(js的arraybuffer等数组化类型以及视图)