十六进制转float C#

int data1 = 0x45;
        int data2 = 0x4A;
        int data3 = 0x4B;
        int data4 = 0x9A;

        int data = data1 << 24 | data2 << 16 | data3 << 8 | data4;

        int nSign;
        if ((data & 0x80000000) > 0)
        {
            nSign = -1;
        }
        else
        {
            nSign = 1;
        }
        int nExp = data & (0x7F800000);
        nExp = nExp >> 23;
        float nMantissa = data & (0x7FFFFF);

        if (nMantissa != 0)
            nMantissa = 1 + nMantissa / 8388608;

        float value = nSign * nMantissa * (2 << (nExp - 128));

        Debug.Log(value);

猜你喜欢

转载自blog.csdn.net/qq_39711635/article/details/89396392