ArrayBuffer
ArrayBuffer
存储固定btye(字节)的二进制数据,它不能直接读写,只能通过视图(TypedArray视图和DataView视图)来读写,视图的作用是以指定格式解读二进制数据。
使用:
1 | const buf = new ArrayBuffer(32) //生成一段32字节的连续内存空间,每个字节的值默认都是 0。 |
btyeLength
二进制数组的字节长度
1 | const buffer = new ArrayBuffer(32) |
slice
截取
1 | const buffer = new ArrayBuffer(32) |
isView
表示参数是否为ArrayBuffer的视图实例。
1 | const buffer = new ArrayBuffer(8); |
TypedArray视图
TypedArray一共包括九种:
Int8Array:8 位有符号整数,长度 1 个字节。Uint8Array:8 位无符号整数,长度 1 个字节。Uint8ClampedArray:8 位无符号整数,长度 1 个字节,溢出处理不同。Int16Array:16 位有符号整数,长度 2 个字节。Uint16Array:16 位无符号整数,长度 2 个字节。Int32Array:32 位有符号整数,长度 4 个字节。Uint32Array:32 位无符号整数,长度 4 个字节。Float32Array:32 位浮点数,长度 4 个字节。Float64Array:64 位浮点数,长度 8 个字节。
以上九种构造函数统称为TypedArray视图,数组的大部分方法它们都能使用。(concat不能)
特点:
- 每个数组成员的类型相同
- 每个数组成员的默认值为0
使用:
1 | const b = new ArrayBuffer(8); |
参数1:ArrayBuffer对象,参数2:视图开始的字节数,必须为每个成员字节数的整数倍(可选),参数3:视图的长度(可选)
上面三个视图指向同一个ArrayBuffer对象,只要任何一个视图对内存有所修改,就会在另外两个视图上反应出来。
TypedArray视图还可以不接收ArrayBuffer生成:
- 数字(长度):
const f64a = new Float64Array(8) //8个Float64 - 普通数组:
const typedArray = new Uint8Array([1, 2, 3, 4]) - 另一个
TypedArray
DataView视图
使用:
1 | const buffer = new ArrayBuffer(24); |
参数1:ArrayBuffer对象,参数2:视图开始的字节数(可选),参数3:视图的长度(可选)
DataView实例提供 8 个方法读取内存:(参数:开始的字节序号)
getInt8:读取 1 个字节,返回一个 8 位整数。getUint8:读取 1 个字节,返回一个无符号的 8 位整数。getInt16:读取 2 个字节,返回一个 16 位整数。getUint16:读取 2 个字节,返回一个无符号的 16 位整数。getInt32:读取 4 个字节,返回一个 32 位整数。getUint32:读取 4 个字节,返回一个无符号的 32 位整数。getFloat32:读取 4 个字节,返回一个 32 位浮点数。getFloat64:读取 8 个字节,返回一个 64 位浮点数。
DataView 视图提供 8 个方法写入内存:(参数1:开始的字节序号,参数2:写入的数据)
setInt8:写入 1 个字节的 8 位整数。setUint8:写入 1 个字节的 8 位无符号整数。setInt16:写入 2 个字节的 16 位整数。setUint16:写入 2 个字节的 16 位无符号整数。setInt32:写入 4 个字节的 32 位整数。setUint32:写入 4 个字节的 32 位无符号整数。setFloat32:写入 4 个字节的 32 位浮点数。setFloat64:写入 8 个字节的 64 位浮点数。
get和set方法还可接收最后一个参数:false:表示使用大端字节序(默认),true:表示使用小端字节序
- 大端字节序:从多字节数据类型的第一个字节开始读取(或存储)
- 小端字节序:从多字节数据类型的最后一个字节开始读取(或存储)
- 本文标题:ArrayBuffer
- 本文作者:灵感胜于汗水
- 创建时间:2022-04-09 15:42:09
- 本文链接:https://cjhsyc.github.io/2022/04/09/ArrayBuffer/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!