# ArrayBuffer

ArrayBuffer 对象用来表示通用的原始二进制数据缓冲区。

它是一个字节数组,通常在其他语言中称为“byte array”。你不能直接操作 ArrayBuffer 中的内容;而是要通过类型化数组对象

Float32Array

Float64Array

Int8Array

Int16Array

Int32Array

Uint8Array

Uint8ClampedArray

Uint16Array

Uint32Array

DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。

# 构造函数

# new(byteLength : number) : ArrayBuffer;

构造函数创建一个以字节为单位的给定长度的新 ArrayBuffer

参数

名称 类型 必填 默认值 兼容性 描述
byteLength number - - 长度,单位字节

返回值

类型 描述
ArrayBuffer ArrayBuffer

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.25 x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
4.25 x x - -

# 静态方法

# isView(arg)

ArrayBuffer.isView() 静态方法用于确定传递的值是否是 ArrayBuffer 视图之一。

参数

名称 类型 必填 默认值 兼容性 描述
arg any - - 需要检测的值。

返回值

类型 描述
boolean 如果 arg 是 ArrayBuffer 视图之一,则返回 true,例如类型化数组对象或者 DataView。否则返回 false。
      var arrayBuffer = new ArrayBuffer(16)
      var float64 = new Float64Array(arrayBuffer);
      var isView = ArrayBuffer.isView(float64)
      console.log(isView)//true

      var a = 1
      var isViewA = ArrayBuffer.isView(a)
      console.log(isViewA)//false

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.25 x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
4.25 x x - -

# fromByteBuffer(byteBuffer: ByteBuffer)

ArrayBuffer.fromByteBuffer() 静态方法用于将android 原生的ByteBuffer对象转换为ArrayBuffer

参数

名称 类型 必填 默认值 兼容性 描述
byteBuffer ByteBuffer - - android原生bytebuffer对象

返回值

类型 描述
ArrayBuffer ArrayBuffer
      var byteBuffer = ByteBuffer.allocate(100)
      byteBuffer.put(1)
      byteBuffer.put(2)
      var buffer = ArrayBuffer.fromByteBuffer(byteBuffer)
      console.log('arraybuffer_toByteBuffer', buffer)
      var int8 = new Int8Array(buffer)
      console.log(int8[0])//1
      console.log(int8[1])//2

      byteBuffer = buffer.toByteBuffer()
      console.log('arraybuffer_toByteBuffer', byteBuffer)

      byteBuffer.rewind()
      console.log(byteBuffer[0])//1
      console.log(byteBuffer[1])//2

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
x 4.25 x x x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
4.25 x x - -

# 实例属性

# byteLength

ArrayBuffer 实例的 byteLength 访问器属性返回该数组缓冲区的长度(以字节为单位)。

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.25 x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
4.25 x x - -

# 实例方法

# slice(begin?, end?)

ArrayBuffer 实例的 slice() 方法返回一个新的 ArrayBuffer 实例,其包含原 ArrayBuffer 实例中从 begin 开始(包含)到 end 结束(不含)的所有字节的副本。

参数

名称 类型 必填 默认值 兼容性 描述
begin number - - 可选,要开始提取的位置索引(从 0 开始),将被转换为整数。负数索引将会从缓冲区末尾开始计算——如果 start < 0,那么将会使用 start + buffer.length。 如果 start < -buffer.length 或省略了 start,则会使用 0。 如果 start >= buffer.length,则不会提取任何内容。
end number - - 可选,要结束提取的位置索引(从 0 开始),将被转换为整数。slice() 提取到但不包括 end。 负数索引将会从缓冲区末尾开始计算——如果 end < 0,那么将会使用 end + buffer.length。 如果 end < -buffer.length,则会使用 0。 如果 end >= buffer.length 或省略了 end,则会使用 buffer.length,则会导致直到末尾的所有元素都被提取。 如果标准化后的 end 位置在 start 位置之前,则不会提取任何内容。

返回值

类型 描述
ArrayBuffer 一个新的 ArrayBuffer 对象。
    let buffer = new ArrayBuffer(16);
    let uint32 = new Uint32Array(buffer);
    uint32[3] = 42;
    console.log(uint32.toString()); // "0,0,0,42"

    let res = buffer.slice(8);
    let sliced = new Uint32Array(res);
    console.log(sliced[1]); // 42

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.25 x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
4.25 x x - -

# toByteBuffer()

ArrayBuffer 实例的 toByteBuffer() 方法返回一个android原生ByteBuffer对象。

返回值

类型 描述
ByteBuffer android 原生ByteBuffer对象。
      var byteBuffer = ByteBuffer.allocate(100)
      byteBuffer.put(1)
      byteBuffer.put(2)
      var buffer = ArrayBuffer.fromByteBuffer(byteBuffer)
      console.log('arraybuffer_toByteBuffer', buffer)
      var int8 = new Int8Array(buffer)
      console.log(int8[0])//1
      console.log(int8[1])//2

      byteBuffer = buffer.toByteBuffer()
      console.log('arraybuffer_toByteBuffer', byteBuffer)

      byteBuffer.rewind()
      console.log(byteBuffer[0])//1
      console.log(byteBuffer[1])//2

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
x 4.25 x x x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
4.25 x x - -

# 注意事项

  • iOS的uvue页面编译成js时,可以使用ArrayBuffer,但由于iOS的uts插件暂时不支持ArrayBuffer,所以不能和uts插件进行通信

  • 默认是以大端序存储数据