我收到一个bytearray,我想把它转换成一个inarray。
这在nodejs中是否可行?
这样做的理由: 代理从串行连接接收值,这是一个bytearray,我尝试解码并将其放入一个更具体的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 serialport处理程序。我想在数组中得到8个整数值:
四个引擎的状态和价值。
所以最后我想要这个:
[1,89,2,49,1,28,3,89]
这个例子不完全正确。但上面的例子是用于测试的。
答案 0 :(得分: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
的内容。