1

我对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);

有什么建议么??任何帮助,将不胜感激。

4

1 回答 1

3

您的方法看起来不错,但也许您被字节顺序问题绊倒了?

在位和/或字节级别(可能不同),串行协议也可以被视为小端或大端。许多串行接口,例如无处不在的 USB,在位级别是 little-endian。RS-232、RS-422 和 RS-485 等物理标准通常也用于先发送最低有效位的 UART...

您的代码首先发送最高有效字节(“big-endian”)。

于 2011-07-09T22:46:54.633 回答