QT 16进制浮点数如何转10进制浮点数?


        16进制浮点数如何转10进制浮点数?我们现在需求将4145 851E 这种16进制浮点数转换成12.345这种10进制的浮点数,那么在QT中怎么实现呢?

代码:

#
#
    QString str="4145851E";
    int hex =str.toInt(0,16);
    float b=*(float*)&hex;
    qDebug() << QString::number(b,'f', 10);
#
#

        下面在提供一个网站,是10进制浮点型,转16进制浮点型的,(根据 12.345形式转4145851E形式),是让大家把代码中的16进制转换成十进制之后,再在下面的网站中进行倒转,检测一下正确性。

        http://www.styb.cn/cms/ieee_754.php

        上面代码计算出的十进制,并不是12.345,而是 12.3449993134,这个是float类型自身存储的问题,这里进行四舍五入即可。

hex.png

注意:

        上述代码在打印的时候,如果需要反过来十进制转16进制来验证,那么小数点后所有位数都打印出来,不然验证的16进制数最后一个字节会有偏差。



上一篇 下一篇