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;
    }
  • 相关阅读:
    0 MATLAB的基本语法测试(7.20)
    eclipse(java)安装swing designer
    Request的用法
    requests模拟登陆的三种方式
    requests模块使用代理
    利用Python爬取翻译网站的翻译功能
    request发送带headers和带参数的请求
    爬虫的介绍和概念
    ROBOTS协议
    爬虫的流程
  • 原文地址:https://www.cnblogs.com/ike_li/p/13651932.html
Copyright © 2011-2022 走看看