jsarraybuffer,jsarraybufferdata

http://www.itjxue.com  2023-01-16 12:03  来源:未知  点击次数: 

哪位朋友使用过js中的ArrayBuffer,请教一个转换问题

可以用ajax获得数据的时候设置数据的类型为arraybuffer,那么这个服务器上数据要什么格式才能用ajax的arraybuffer

还是说什么类型都可以,比如txt,html,script,jpg,都可以在传递的时候设置成arraybuffer!

JavaScript中的ArrayBuffer该如何理解呢?

概述

ArrayBuffer?(缓冲数组)是一种用于呈现通用、固定长度的二进制数据的类型。不能直接构造并填充?ArrayBuffer 的内容,而应该先创建一个?ArrayBufferView?对象,该对象用具体的格式来呈现?ArrayBuffer?的内容,你可以使用此对象来读写?ArrayBuffer?的内容。

方法概要

ArrayBuffer?ArrayBuffer(unsigned?long?length);

方法

ArrayBuffer()

构造方法接收一个数字参数,作为新数组的长度,返回新创建的?ArrayBuffer?对象。

ArrayBuffer?ArrayBuffer(

??unsigned?long?length

);

参数

length

要创建的数组的大小。

返回值

新创建的 ArrayBuffer 对象,该对象具有 length 的大小,所有位置均被初始化为 0。

slice()

返回一个新的?ArrayBuffer?对象,它的内容是从当前?ArrayBuffer?的?begin?到?end?位置的备份。

负数的?begin?或?end?值指示从数组末端计数的索引。

ArrayBuffer?slice(

??unsigned?long?begin

??unsigned?long?end?Optional

);

参数

begin

复制 Byte?开始的索引。

end

复制 Byte 结束的索引。如果未指定,返回的 ArrayBuffer 包含从 begin 到此 ArrayBuffer 结尾的所有字节。

返回值

新的?ArrayBuffer?对象。

示例

在下面的示例中,我们创建了一个 32 字节的缓冲数组

var?buf?=?new?ArrayBuffer(32);

js 怎么解析ArrayBuffer

需要通过DataView,一个例子:

var buffer = ... // 一个ArrayBuffer,一般是Ajax取自后台,假设是个Int32数组

var dataview = new DataView(buffer);

var ints = new Int32Array(buffer.byteLength / 4); // 解析到这个数组,注意一个int占4字节

for (var i = 0; i ints.length; i++) {

ints[i] = dataview.getInt32(i * 4); // 每次提取一个int

}

怎么理解JavaScript中的ArrayBuffer

JS里的Array,因为有很多功能,而且是不限制类型的,或者它还可能是稀疏的……总之这个Array是“托管”的,它内部有比较复杂的实现。

而如果你从XHR、File API、Canvas等等各种地方,读取了一大串字节流,如果用JS里的Array去存,又浪费,又低效。

于是为了配合这些新的API增强JS的二进制处理能力,就有了ArrayBuffer。

ArrayBuffer简单说是一片内存,但是你不能(也不方便)直接用它。这就好比你在C里面,malloc一片内存出来,你也会把它转换成unsigned_int32或者int16这些你需要的实际类型的数组/指针来用。

这就是JS里的TypedArray的作用,那些Uint32Array也好,Int16Array也好,都是给ArrayBuffer提供了一个“View”,MDN上的原话叫做“Multiple views on the same data”,对它们进行下标读写,最终都会反应到它所建立在的ArrayBuffer之上。

除了TypedArray以外,也可以使用DataView来读写ArrayBuffer,这样会麻烦一些,但也更灵活。DataView能更自由的选择字节序,对于对齐的要求也更低。

急问:js中arraybuffer如何转成字符串

可以用数组的字符串拼接函数join(),例如

var arr = ["12", "34", "56"];

alert(arr.join("")); // join的参数是分隔符

(责任编辑:IT教学网)

更多

相关金山WPS文章

推荐金山WPS文章