1

我正在使用 Modbus TCP 读取设备的数据。数据主要是存储为两个 16 位值的单精度浮点整数 (IEEE754)。现在我需要将两条短裤转换为浮点数。

一个例子: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);

我希望有一种更短的方法,也许还有一种适用于大端 PC 的方法。

我也不明白为什么这不起作用:

ushort[] received = new ushort[] { 17253, 46620 };
byte[] asByte = new byte[4];
Buffer.BlockCopy(received, 0, asByte, 0, 4);
float result = BitConverter.ToSingle(asByte, 0);
4

0 回答 0