0

我收到一个字节数组,我想把它转换成一个整数数组。

这在 NodeJS 中可行吗?

这样做的理由:

代理从作为字节数组的串行连接接收值,我尝试对其进行解码并将其放入更具体的 JSON 对象中。

var uint8Message = new Uint8Array(8),
    output = [];

uint8Message[0] = 40;
uint8Message[1] = 40;
uint8Message[2] = 40;
uint8Message[3] = 40;
uint8Message[4] = 40;
uint8Message[5] = 40;
uint8Message[6] = 40;
uint8Message[7] = 40;

var counter = 0;
var intermediate = [];
for (var i = 0; i< uint8Message.byteLength; i++) {
    if (counter < 4) {
        intermediate.push(uint8Message[i]);
    }

    counter++;
    if (counter === 3 ){
        output.push(new Uint16Array(intermediate));
        counter = 0;
        intermediate = [];
    }
}

console.log(output);

我正在发送一个 intArray,它从 arduino 转换为 byteArray 到 NodeJS 串行端口处理程序。我想在数组中获取 8 个整数值:

四个引擎的状态和价值。

所以最后我想要这个:

[1,89,2,49,1,28,3,89]

这个例子并不完全正确。但是上面的例子是为了测试。

4

1 回答 1

1

仍然不确定我是否正确理解了您的问题,但是如果您想转换Uint8Array为说Uint32Array可以

const uint8Array = new Uint8Array(8).fill(40)
console.log(new Uint32Array(uint8Array.buffer))

如果你需要普通的旧 js 数组,你可以这样做

const uint8Array = new Uint8Array(8).fill(40)

const intArray = Array.from(new Uint32Array(uint8Array.buffer))

console.log(Array.isArray(intArray))

此外,您可能想看看所谓DataView的允许低级别访问缓冲区内容的方法。

于 2017-06-08T07:42:09.693 回答