uint16在JavaScript中使用高字节和低字节转换为具有2个字节的十六进制



我对从微控制器转换数据有点困惑。我想发送和接收Ints,因此我必须将f.e.:1100转换为十六进制,即44c,但我需要将其拆分为2个字节44和0c,因为控制器首先期望低字节:

十进制:1100十六进制:044c

控制器等待:字节[0x0c],字节[0x44](按顺序(

这真的让我头疼,因为我不想把它转换成字符串和拆分等。当我从mc收到消息时,我也有同样的挑战,因为我首先收到低字节。

我不习惯JavaScript中的这种东西,需要一些帮助。

您可以使用Buffers,这是node.js中的一个字节数组,允许您使用一些简单的I/O BE和LE函数,例如:

const buf = Buffer.alloc(2); //similar to malloc
const number = 1100;
buf.writeUInt16BE(number);
console.log(buf); //04 4c

buf.writeUInt16LE(number);
console.log(buf); //4c 04

相反,如果您需要一次访问正好4个位,则需要按位运算符(例如>>&(:

const GetNthNibble = (number, nth) => (number >> 4*nth) & 0xF;
const number = 0x1234;
console.log(GetNthNibbles(number, 0)); //4
console.log(GetNthNibbles(number, 1)); //3
console.log(GetNthNibbles(number, 2)); //2
console.log(GetNthNibbles(number, 3)); //1

最新更新