简体中文
ArrayBuffer 对象用来表示通用的原始二进制数据缓冲区。
它是一个字节数组,通常在其他语言中称为“byte array”。你不能直接操作 ArrayBuffer 中的内容;而是要通过类型化数组对象
或 DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。
构造函数创建一个以字节为单位的给定长度的新 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 | - | - |
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 | - | - |
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 | - | - |
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 | - | - |
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 | - | - |
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插件进行通信
默认是以大端序存储数据