将两个短路转换为IEEE754单精度浮点数

时间:2014-11-05 10:37:37

标签: c# converter endianness ieee ushort

我正在使用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);

0 个答案:

没有答案