如何在Nodejs中转换数组中的缓冲区?

yhxst69z  于 2023-01-25  发布在  Node.js
关注(0)|答案(3)|浏览(133)

如何转换数组中的缓冲区?
缓冲液(十六进制值):

myBuffer = <Buffer 48 65 6c 6c 6F >

我想要一个变量类型的数组,如下所示:

myArray = [48, 65, 6c, 6c, 6F] // Hex values
  or  
myArray = [72, 101, 108, 108, 111] // Decimal values

重要提示:我不想使用for循环来遍历缓冲区的字节。我想知道是否有一种原生的方法来将缓冲区转换为数组。

kknvjkwl

kknvjkwl1#

看起来您正在引用Node.js Buffer。如果是这种情况,您可以简单地执行以下操作:

var buf = new Buffer([72,101,108,108,111]) //<Buffer 48 65 6c 6c 6f>
var arr = Array.prototype.slice.call(buf) //[72,101,108,108,111]
z4iuyo4d

z4iuyo4d2#

如果你正在谈论arraybuffer,试试这个方法:

function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint16Array(buf));
}

如果您正在讨论nodejs的缓冲区对象,请尝试以下操作:

let bufferOne = Buffer.from('This is a buffer example.');
console.log(bufferOne);

// Output: <Buffer 54 68 69 73 20 69 73 20 61 20 62 75 66 66 65 72 20 65 78 61 6d 70 6c 65 2e>

let json = JSON.stringify(bufferOne);
console.log(json);

// Output: {"type":"Buffer","data":   [84,104,105,115,32,105,115,32,97,32,98,117,102,102,101,114,32,101,120,97,109,112,108,101,46]}
json = JSON.parse(json);
json.data.forEach(e=> console.log(e.toString(16))); 
// Output: 54 68 69 73 20 69 73 20 61 20 62 75 66 66 65 72 20 65 78 61 6d 70 6c 65 2e
nr9pn0ug

nr9pn0ug3#

在ES6中,这也适用于:

const buffer = new Buffer([72,101,108,108,111])
const arr = [...buffer] //[72,101,108,108,111]

相关问题