Blob & ArrayBuffer & TypeArray & DataView & Buffers<nodejs>
TypeArray 构造函数的参数是 ArrayBuffer 还是 TypeArray 有区别,前者是视图,后者是赋值
Blob 是一个 Web API, 用于在web中传输二进制数据。 FileRead 可以读取成数组缓存。Blob 对象表示一个不可变、原始数据的类文件对象。
ArrayBuffer 这一个数据类型是用来表示一个通用的,固定长度的二进制缓冲区(buffer)。不能直接操作 ArrayBuffer 里面的数据; 对应的是你需要创建一个 ArrayBufferView 对象来表示表示一个指定类型缓冲区,然后用它来读写缓冲区里面的内容。
// 可伸缩 ArrayBuffer 和可增长 SharedArrayBuffer 被设计为直接缓存区(构造函数有最大字节设置),虚拟内容为地址范围保留,在需要之前不申请物理内存
ArrayBufferView 这个类型描述了某一个特定的 ArrayBuffer 的数据内容视图(TypeArray, DataView). 要注意的是你可能会给同一个数据缓冲区创建多个视图, 但指向同一数据。
TypeArray是一种形似数组的对象,它提供了一个更加高效的机制来访问和处理原始二进制数据。
DataView 用来生成内存的视图,可以自定义格式和字节序,比如第一个字节是Uint8(无符号8位整数)、第二个字节是Int16(16位整数)、第三个字节是Float32(32位浮点数)等等。
function ab2str(buf) {return String.fromCharCode.apply(null, new Uint16Array(buf));}function str2ab(str) {var buf = new ArrayBuffer(str.length*2); // 2 bytes for each charvar bufView = new Uint16Array(buf);for (var i=0, strLen=str.length; i<strLen; i++) {bufView[i] = str.charCodeAt(i);}return buf;}
ArrayBuffer对象代表原始的二进制数据,TypedArray 对象代表确定类型的二进制数据,DataView对象代表不确定类型的二进制数据。它们支持的数据类型一共有9种(DataView对象支持除Uint8C以外的其他8种)。
数据类型 | 字节长度 | 含义 | 对应的C语言类型 |
Int8 | 1 | 8位带符号整数 | signed char |
Uint8 | 1 | 8位不带符号整数 | unsigned char |
Uint8C
Uint8ClampedArray | 1 | 8位不带符号整数(自动过滤溢出[^0-255]) | unsigned char |
Int16 | 2 | 16位带符号整数 | short |
Uint16 | 2 | 16位不带符号整数 | unsigned short |
Int32 | 4 | 32位带符号整数 | int |
Uint32 | 4 | 32位不带符号的整数 | unsigned int |
Float32 | 4 | 32位浮点数 | float |
Float64 | 8 | 64位浮点数 | double |
=============
Buffers are also Uint8Array TypedArray instances. However, there are subtleincompatibilities with the TypedArray specification in ECMAScript 2015. Forinstance, while ArrayBuffer#slice() creates a copy of the slice,the implementation of Buffer#slice() creates a view over theexisting Buffer without copying, making Buffer#slice() far more efficient.
读取完流数据转字符串:Buffer.concat(list, len<整个buffer长度>).toString();