In16Array缓冲到Int16rray

问题描述

在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部分。因此,根据BufferBuffer在大多数情况下都是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);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...