我正在使用Modbus TCP来读取设备的数据。数据主要是单精度浮点整数(IEEE754),存储为两个16位值。现在我需要将两个短裤转换为浮动。
示例:ushort [] {17253,46620}的转换应该产生229.711365。
我认为问题是该设备使用大端,我正在使用小端的PC上工作。我目前的做法是:
ushort[] received = new ushort[]{ 17253, 46620 };
byte[] asByte = new byte[] {
(byte)(received[1] % 256),
(byte)(received[1] / 256),
(byte)(received[0] % 256),
(byte)(received[0] / 256),
};
float result = BitConverter.ToSingle(asByte, 0);
我希望有一种更短的方式,也许是一种适用于大端电脑的方式。
我也不明白为什么这不起作用:
ushort[] received = new ushort[] { 17253, 46620 };
byte[] asByte = new byte[4];
Buffer.BlockCopy(received, 0, asByte, 0, 4);
float result = BitConverter.ToSingle(asByte, 0);