问题描述
在Node.js中,我试图转换一个包含如下Int16Array缓冲区元素的缓冲区。
我有一个数字列表,例如跟随255,256,257,258
Int16Array(4) [ 255,258 ]
<Buffer ff 00 00 01 01 01 02 01>
因此,当我有一个像<Buffer ff 00 00 01 01 01 02 01>
这样的缓冲区时,该怎么做才能以255,258
的形式返回到原始数组
var ar = new Int16Array([255,258])
var buf = Buffer.from(ar.buffer)
console.log('Here we have this',buf)
> <Buffer ff 00 00 01 01 01 02 01>
//And I need to cast back to array as [255,258]
解决方法
就像评论中所说的那样,类型化数组具有构造函数来创建现有缓冲区的视图:
let bytes=Uint8Array.of(0xff,00,01,02,01); // <= from your log
let buf=bytes.buffer;
let shorts=new Int16Array(buf);
for(let x of shorts)
console.log(x);
好的,抱歉,我错过了Node.js部分。因此,根据Buffer
,Buffer
在大多数情况下都是Uint8Array
:
var ar = new Int16Array([255,256,257,258]);
var buf = Buffer.from(ar.buffer);
console.log('Here we have this',buf);
var other = new Int16Array(buf.buffer);
for(let x of other)
console.log(x);