如何将 modbus 32 位字转换为 C# 浮点数?
How to convert a modbus 32-bit word to a C# float?
如何在 C# 中将 modbus 32 位字转换为浮点数?
这是我的代码:
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
但我不明白..
为什么?
您需要检查的几件事:
- 您的设备是否符合 C#
float
的标准 IEEE-754?
您的设备使用哪种字节顺序?
您可以在下面看到字节序可以按照 WORD
,而不是 DWORD
http://store.chipkin.com/articles/modbus-floating-point-encoding
当您确定所有这些并且 BitConverter
失败时,您可以随时手动解析,,只要您有规范。
如何在 C# 中将 modbus 32 位字转换为浮点数?
这是我的代码:
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
但我不明白.. 为什么?
您需要检查的几件事:
- 您的设备是否符合 C#
float
的标准 IEEE-754? 您的设备使用哪种字节顺序?
您可以在下面看到字节序可以按照
WORD
,而不是DWORD
http://store.chipkin.com/articles/modbus-floating-point-encoding
当您确定所有这些并且 BitConverter
失败时,您可以随时手动解析,