我想将数值打印到4值[uint32_t]
的数组中例如255
=> [0x00, 0x00, 0x00, 0xFF]
想要将此值从Nodejs服务器发送到Arduino
是否存在任何天然溶解或命题?
答案 0 :(得分:3)
有很多方法可以做到这一点 - 例如你可以移动数字并将所有位置零,但是8个最不重要的位。
例如:
const conv = num => [
(num >> 24) & 255,
(num >> 16) & 255,
(num >> 8) & 255,
num & 255,
];
console.log(conv(16));
console.log(conv(255));
console.log(conv(256));
console.log(conv(640));
console.log(conv(32768));
或者,你可以采用一种完全不同的方法,而不是告诉计算机如何精确地移位这些位,你可以告诉它获得一个4字节的缓冲区,存储一个32位的数字并作为一个数组显示给你四个8位数字,使用JavaScript中的新类型数组:
const conv = num => {
let b = new ArrayBuffer(4);
new DataView(b).setUint32(0, num);
return Array.from(new Uint8Array(b));
}
console.log(conv(16));
console.log(conv(255));
console.log(conv(256));
console.log(conv(640));
console.log(conv(32768));
结果是一样的,但这次你不需要知道移位的方法以及如何掩盖它们。这是使用JavaScript的一些新功能。有关详细信息,请参阅:
请注意,这都是使用big-endian格式,如问题中的示例。但请记住,数字也可以用小端格式表示。参见: