如何将十六进制字符串转换为单精度浮点数

l46*_*kok 2 .net c# string floating-point hex

我有一个字符串类型的4字节十六进制代码,我需要将其转换为浮点数,符合IEEE 754 单精度浮点格式.

我认为Java有一个库可以轻松完成,但我不确定C#是否有一个.解决这个问题的最佳方法是什么?

Mar*_*ell 6

因为它听起来像是从十六进制字符串开始:

string hex = "0a0b0c0d";
byte[] raw = new byte[hex.Length / 2];
for (int i = 0; i < raw.Length; i++)
{
    // THEN DEPENDING ON ENDIANNESS
    raw[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16);
    // OR
    raw[raw.Length - i - 1] = Convert.ToByte(hex.Substring(i * 2, 2), 16);
}
float f = BitConverter.ToSingle(raw, 0);
Run Code Online (Sandbox Code Playgroud)

如果您实际上是从a开始byte[],那么您可以跳过前几个步骤.