将int16转换为字节数组

Convert int16 to byte array

本文关键字:字节数 数组 字节 int16 转换      更新时间:2023-10-16

我对C很陌生,所以有点困惑。

我正在尝试将int16转换为byte[]数组。

我有一个像-200这样的int16,我想把它转换成一个byte[2]数组,就像下面的例子一样。

Velocity = -200 = hex FF38 = [hex FF] [hex 38] = [255] [56]

我正在获取值并将它们传递给串行端口,如下所示,但我需要传递int16,并有一个函数将其转换为字节[]。

Serial.print(255,BYTE);
Serial.print(56,BYTE);

我找到了下面的代码,但无法让它工作

Serial.print((velocity & 0xff00) >> 8, BYTE);
Serial.print(velocity & 0xff, BYTE);

有什么建议吗? ?

您的方法看起来不错,但也许您正在被端序问题绊倒?

串行协议也可以在位和/或字节级别上被视为小端或大端(可能不同)。许多串行接口,如无处不在的USB,在位级别上是小端的。物理标准,如RS-232, RS-422和RS-485通常也与uart一起使用,首先发送最低有效位…

您的代码首先发送最重要的字节("大端字节")。