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 char
var 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();