C++ 将int16转换为字节数组

C++ 将int16转换为字节数组,c++,serial-port,serial-communication,C++,Serial Port,Serial Communication,我对C真的很陌生,所以有点困惑 我正在尝试将int16转换为byte[]数组 我有一个类似于-200的int16,我想把它转换成字节[2]数组,就像下面的例子一样 Velocity = -200 = hex FF38 = [hex FF] [hex 38] = [255] [56] 我获取这些值并将它们传递到串行端口,如下所示,但我需要传递int16,并让一个函数为我将其转换为字节[] Serial.print(255,BYTE); Serial.print(56,BYTE); 我找到了以下

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

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

我有一个类似于-200的int16,我想把它转换成字节[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一起使用


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

在上一个示例中,什么不起作用?您的“无法使其起作用”是什么意思?您是否尝试过使用printf或其他工具来查看
(velocity&0xFF00)>>8
的结果是什么?
Serial.print
。。。六羟甲基三聚氰胺六甲醚。。。你确定你的代码是C,你的编译器是C吗?
print
是结构类型对象的函数指针部分吗?无论如何为什么它不起作用?编译器消息是什么?发生了什么或没有发生什么?帮助我们帮助您并确保language@pmg好点,看起来像C++