Nodejs:如何将Buffer转换为ArrayBuffer/将ArrayBuffer转换为Buffer

1,197 阅读2分钟

在这篇文章中,学习如何在Nodejs应用程序中把缓冲区转换为/从ArrayBuffer,并举例说明。

缓冲区是Nodejs的一个对象,用来表示固定长度的字节。ArrayBuffer也是在javascript中存储固定长度的二进制字节数组的数据。

arrayBuffer中的数据不能直接读取,但你可以使用数据视图对象或类型化数组。一些类型的数组包括Int8Array, UInt8Array, Float32Array等。

缓冲区对象可以用alloc方法创建

const buf1 = Buffer.alloc(10);

ArrayBuffer使用new关键字创建,如下所示

new ArrayBuffer(fixedlengthbytes)

如何在Nodejs中把Buffer转换为ArrayBuffer?

由于ArrayBuffer不能被读写,而是创建一个类型化的数组或视图,并将数据复制到其中。在这个例子中,Buffer对象被创建,它将被转换为ArrayBuffer。由于我们有一个限制,即不能修改ArrayBuffer,所以创建了ArrayBuffer对象,其长度与缓冲区对象相同。因为我们必须用ArrayBuffer对象作为构造函数的参数来创建一个类型化的数组Uint8Array。用for循环遍历缓冲区对象,并将数据复制到类型化数组。最后,类型化数组被返回,它是一个指向Array Buffer的指针。

const bufferObject = Buffer.alloc(16);

var arrayBuffer = new ArrayBuffer(bufferObject.length);
var typedArray = new Uint8Array(arrayBuffer);
for (var i = 0; i < bufferObject.length; ++i) {
    typedArray[i] = bufferObject[i];
}

如何在Nodejs中把ArrayBuffer转换为Buffer

首先,使用arraybuffer长度的alloc方法创建一个缓冲区对象,它可以分配缓冲区内存。遍历ArrayBuffer对象,并将每个元素的数据复制到缓冲区对象。

var arrayBuffer = new ArrayBuffer(16);
var bufferObject = new Buffer.alloc(arrayBuffer.byteLength)
for (var i = 0; i < arrayBuffer.length; i++) {
    bufferObject[i] = arrayBuffer[i];
}

总结

你学会了在Nodejs中从Arraybuffer复制数据到/从缓冲区复制数据。

我希望你喜欢它。