我是C的新手,所以有点困惑。
我正在尝试将int16转换为byte []数组。
我有一个像-200这样的int16,我想把它转换成byte [2]数组,就像下面的例子一样。
Velocity = -200 = hex FF38 = [hex FF] [hex 38] = [255] [56]
我正在接受这些值并将它们传递到串口,如下所示,但是我需要传递int16,并且有一个函数将它转换为byte []。
Serial.print(255,BYTE);
Serial.print(56,BYTE);
我找到了以下代码,但无法使其正常工作
Serial.print((velocity & 0xff00) >> 8, BYTE);
Serial.print(velocity & 0xff, BYTE);
有什么建议吗?任何帮助将不胜感激。
答案 0 :(得分:3)
你的方法看起来很好,但也许你被endianness问题绊倒了?
串行协议也可以在位和/或字节级别(可能不同)被视为小端或大端。许多串行接口,例如无处不在的USB,在位级别上都是小端的。 RS-232,RS-422和RS-485等物理标准通常也用于首先发送最低有效位的UART ......
您的代码首先发送最重要的字节(“big-endian”)。