IEEE754标准转换QT代码

IEEE754标准转换QT代码

qtcreator使用的ieee754标准的4字节数组与浮点数之间的转换方法,ieee754的4位数组如果转换成二进制后,大体结构是:

第一位代表符号为,正数为0,负数为1.

第2到第9位为指数位,指数是2进制的指数,其中127代表指数0,可以表示指数范围±127.

后面10位到32位代表有效数字的小数部分xxxxxx,实际有效值就是1.xxxxxx,在作用相应指数。

详细资料网上搜索吧。下面直接上QT转换代码:

class IEEE754   //ieee754标准四字节数值与浮点数相互转换;
{
public:
    static double toFloat(QString list)   //数组转浮点数
    {  list=list.replace(" ","");
         if(list.length()!=8) { return 0;}
         bool ok;
         long sign= list.left(1).toLong(&ok,16)>>3;
         long Zsh=(list.left(3).toLong(&ok,16)  & 0x7F8)>>3;
         long Wsh=list.right(6).toLong(&ok,16)+0x800000;
         double ren=pow(-1,sign)*double(Wsh)*pow(2,(Zsh-150));
         return ren;
       //  return QString::number(ren,'f',2 );
    }
    static QString toList(double value)  //浮点数转数组
    {   int sign;QString S;double v;
        if((value)==0){return "00000000" ; }else if((value)>0){sign=0;v=value; } else {
            sign=1;v=-value;}
        long zhishu=0;
        long weishu=0;
        if(v<1){ while(v<1){v=v*2;zhishu--; }    }
        else { while(v>=2){v=v/2;zhishu++; }
        zhishu = zhishu + 127;
        v=v-1;
        weishu=v*pow(2,23);
        weishu=weishu+(zhishu%2)*0x800000;
        zhishu=zhishu/2+sign*0x80;
        S=QString::number(zhishu,16)+QString::number(weishu,16);

        }
        return S.toUpper();
    }
};
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值