我正在编写一个通过 modbus TCP 进行通信的 C 程序。3.14
我在我的 modbus 客户端上发送浮点数,以0x4048F5C3
. 我的 C 代码正在正确接收 modbus 数据包,现在我只需要将 重新解释unsigned char *buffer
为浮点数,以便获得 value 3.14
。这是我的代码
int main()
{
setup_modbus_tcp();
unsigned char buffer[4] = { 0x00, 0x00, 0x00, 0x00 };
get_modbus_data(buffer, 4);
//Buffer now holds { 0x40, 0x48, 0xF5, 0xC3 };
float value = *(float *)buffer;
//value is now -490.564453
}
现在,我可以说这个问题是由于字节顺序,因为如果我交换字节顺序,缓冲区看起来像这样:
{ 0xC3, 0xF5, 0x48, 0x40 };
然后一切正常。但这感觉有点乱。我必须交换字节顺序吗?或者有没有一种方法可以在我这样做时指定字节顺序:
float value = *(float *)buffer;