zoukankan      html  css  js  c++  java
  • IEEE754浮点数转换

    一、

    处理Modbus协议的数据时,碰到IEEE754浮点数的转换,根据规则自己写出转换代码,方便以后使用。

    1.在线转换网址:http://lostphp.com/hexconvert/ 

    二、

    转换浮点数32位。

    void MainWindow::on_pushButton_clicked()
    {
       //int source_data=0x41C7C474;//24.970924377441406
       //int source_data=0x81C7C474;
       //int source_data=0x3938A523;//0.0001760912564350292
    
       int data[4]={0x39,0x38,0xA5,0x23};
       int source_data=(int32_t)(data[0]<<24)+(int32_t)(data[1]<<16)+(int32_t)(data[2]<<8)+(int32_t)data[3];
       
        HexToFloat32_IEEE754(source_data);
    }
    #include <math.h>
    float MainWindow::HexToFloat32_IEEE754(int source_data)
    {
    
        /*
        1位符号位(SIGN)
        8位指数位(EXPONENT)
        23位尾数位(MANTISSA)
    
        其中,32位二进制数的排位为:[31][30][29]...[2][1][0]
    
        16进制转换为10进制的公式如下:
    
        SGL = (-1)^SIGN * 1.MANTISSA * 2^(EXPONENT-127)*/
    
        int sign=source_data>>31;
        int exponent=(source_data&0x7FFFFFFF)>>23;
        float mantissa=(source_data&0x7FFFFF)/std::pow(2,23);
        //float m=mantissa/std::pow(2,23);
    
        float dest=std::pow(-1,sign)*std::pow(2,exponent-127)*(1+mantissa);
    
        qDebug()<<"dest:"<<dest;
        return  dest;
    }
  • 相关阅读:
    js-数组的原型拓展
    java-单例模式的java连接池
    java-基本数据类型值范围
    rabbitmq
    从哪跌倒从哪爬起,千里之行始于足下
    create python project steps
    常用代码片段
    shell脚本常用(记)
    shell学习
    maven工具使用
  • 原文地址:https://www.cnblogs.com/ike_li/p/13651932.html
Copyright © 2011-2022 走看看