文件处理:ArrayBufferAPI

132 阅读3分钟

1、什么是ArrayBuffer

ArrayBuffer是一种特殊的数组,它本身是一个黑盒,不能直接读写所存储的数据,需要借助以下视图对象来读写TypedArray只是一个概念,实际使用的是那9个对象

ArrayBuffer.png

TypedArray视图和DataView视图的区别主要是字节序,TypedArray的数组成员都是同一类型,DataView的数组成员可用是不同的数据类型

元素类型化数组字节描述
Int8Int8Array18位有符号整数
Uint8Uint8Array18位无符号整数
Uint8CUint8ClampedArray18位无符号整数
Int16Int16Array216位有符号整数
Uint16Uint16Array216位无符号整数
Int32Int32Array432位有符号整数
Uint32Uint32Array432位无符号整数
Float32Float32Array432位浮点
Float64Float64864位浮点

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 实例提供了以下方法来读取内存,它们的参数都是一个字节序号,表示开始读取的 字节位置:

  1. getInt8:读取1个字节,返回一个8位整数。
  2. getUint8:读取1个字节,返回一个无符号的8位整数
  3. getInt16:读取2个字节,返回一个16位整数。
  4. getUint16:读取2个字节,返回一个无符号的16位整数·getInt32:读取4个字节,返回一个32位整数
  5. getUint32:读取4个字节,返回一个无符号的32位整数
  6. getFloat32:读取4个字节,返回一个32位浮点数。
  7. getFloat64:读取8个字节,返回一个64位浮点数

DataView 实例提供了以下方法来写入内存,它们都接受两个参数,第一个参数表示开始写入数据的字节序号,第二个参数为写入的数据:

  1. setInt8:写入1个字节的8位整数

  2. setUint8:写入1个字节的8位无符号整数

  3. setInt16:写入2个字节的16位整数。

  4. setUint16:写入2个字节的16位无符号整数

  5. setlnt32:写入4个字节的32位整数。

  6. setUint32:写入4个字节的32位无符号整数

  7. setFloat32:写入4个字节的32位浮点数。

  8. 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主我们一起学前端#

#www.bilibili.com/video/BV1fe…