如何将modbus 32位字转换为c#中的浮点?
这是我的代码:
float Modbus_Floating(byte[] temp)
{
byte[] temp2 = new byte[4];
temp2[0] = temp[3];
temp2[1] = temp[2];
temp2[2] = temp[1];
temp2[3] = temp[0];
float f = System.BitConverter.ToSingle(temp, 0);
return f;
}
它不起作用, 我得到一个很大的负数 我应该得到36.7
[0] 102 byte
[1] 102 byte
[2] 66 byte
[3] 22 byte
但我没有那个...... 为什么?
答案 0 :(得分:2)
您需要检查的事情:
float
标准IEEE-754?您的设备使用哪种字节序?
您可以在下面看到字节顺序可以是WORD
,而不是DWORD
http://store.chipkin.com/articles/modbus-floating-point-encoding
当您确定所有这些内容并且BitConverter
失败时,您可以随时手动解析it's fairly easy as in this example,前提是您有规格。