4 个字节到十进制 - C# 来自 Windev
4 bytes to decimal - C# From Windev
我有这 4 个字节:0x41 0xCC 0xB7 0xCF
我必须找到号码 25.5897503。
对于 Windev,示例使用了 Transfer() 函数,但我在 C# 中找不到等效项
你能帮我指点一下吗?
谢谢
似乎需要 Single
精度。所以在BitConverter
class:
中使用ToSingle
方法
byte[] array = new byte[] {0x41, 0xCC, 0xB7, 0xCF};
float value = BitConverter.ToSingle(array, 0);
不过要小心 Little / Big Endian。如果没有按预期工作,请先尝试反转数组:
byte[] array = new byte[] {0x41, 0xCC, 0xB7, 0xCF};
Array.Reverse(array);
float value = BitConverter.ToSingle(array, 0);
编辑:
或者,如 Dimitry Bychenko 所建议,您也可以使用 BitConverter.IsLittleEndian
检查转换器的 endianess:
byte[] array = new byte[] {0x41, 0xCC, 0xB7, 0xCF}; //array written in Big Endian
if (BitConverter.IsLittleEndian) //Reverse the array if it does not match with the BitConverter endianess
Array.Reverse(array);
float value = BitConverter.ToSingle(array, 0);
我有这 4 个字节:0x41 0xCC 0xB7 0xCF 我必须找到号码 25.5897503。
对于 Windev,示例使用了 Transfer() 函数,但我在 C# 中找不到等效项
你能帮我指点一下吗?
谢谢
似乎需要 Single
精度。所以在BitConverter
class:
ToSingle
方法
byte[] array = new byte[] {0x41, 0xCC, 0xB7, 0xCF};
float value = BitConverter.ToSingle(array, 0);
不过要小心 Little / Big Endian。如果没有按预期工作,请先尝试反转数组:
byte[] array = new byte[] {0x41, 0xCC, 0xB7, 0xCF};
Array.Reverse(array);
float value = BitConverter.ToSingle(array, 0);
编辑:
或者,如 Dimitry Bychenko 所建议,您也可以使用 BitConverter.IsLittleEndian
检查转换器的 endianess:
byte[] array = new byte[] {0x41, 0xCC, 0xB7, 0xCF}; //array written in Big Endian
if (BitConverter.IsLittleEndian) //Reverse the array if it does not match with the BitConverter endianess
Array.Reverse(array);
float value = BitConverter.ToSingle(array, 0);