1、什么是ArrayBuffer
ArrayBuffer是一种特殊的数组,它本身是一个黑盒,不能直接读写所存储的数据,需要借助以下视图对象来读写TypedArray只是一个概念,实际使用的是那9个对象
TypedArray视图和DataView视图的区别主要是字节序,TypedArray的数组成员都是同一类型,DataView的数组成员可用是不同的数据类型
| 元素 | 类型化数组 | 字节 | 描述 |
|---|---|---|---|
| Int8 | Int8Array | 1 | 8位有符号整数 |
| Uint8 | Uint8Array | 1 | 8位无符号整数 |
| Uint8C | Uint8ClampedArray | 1 | 8位无符号整数 |
| Int16 | Int16Array | 2 | 16位有符号整数 |
| Uint16 | Uint16Array | 2 | 16位无符号整数 |
| Int32 | Int32Array | 4 | 32位有符号整数 |
| Uint32 | Uint32Array | 4 | 32位无符号整数 |
| Float32 | Float32Array | 4 | 32位浮点 |
| Float64 | Float64 | 8 | 64位浮点 |
2、如何通过TypedArray对ArrayBuffer进行读写操作
<script>
// 创建生成一个长度为4的ArrayBuffer
let buffer = new ArrayBuffer(4)
// 使用Int8Array对buffer进行包装,使buffer能够进行读写操作
let wrapBuffer = new Int8Array(buffer)
// 操作buffer里面的内容
wrapBuffer[0] = 100
// 读取buffer里面的内容
console.log(wrapBuffer)
</script>
3、如何通过DataView对ArrayBuffer进行读写操作
DataView 实例提供了以下方法来读取内存,它们的参数都是一个字节序号,表示开始读取的 字节位置:
- 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 实例提供了以下方法来写入内存,它们都接受两个参数,第一个参数表示开始写入数据的字节序号,第二个参数为写入的数据:
-
setInt8:写入1个字节的8位整数
-
setUint8:写入1个字节的8位无符号整数
-
setInt16:写入2个字节的16位整数。
-
setUint16:写入2个字节的16位无符号整数
-
setlnt32:写入4个字节的32位整数。
-
setUint32:写入4个字节的32位无符号整数
-
setFloat32:写入4个字节的32位浮点数。
-
setFloat64:写入8个字节的64位浮点数
<script> // 创建生成一个长度为4的ArrayBuffer let buffer = new ArrayBuffer(4) // 使用DataView对buffer进行包装,使buffer能够被读写 let dataView = new DataView(buffer) // 往buffer的第2个数据写入20 dataView.setInt8(1,20) // 读取buffer的第二个数据 console.log(dataView.getInt8(1))
#文档参考自:bilibiliUP主我们一起学前端#