首页 > 其他 > 详细

QT实现IEEE754转换

时间:2021-06-19 09:19:32      阅读:19      评论:0      收藏:0      [点我收藏+]

  

由于需要和OMRON PLC进行FINS通信,所以需要进行格式转换。

 

①浮点转16进制字符串

QString MainWindow::ieee754_float_to_hex_str(QString str){

    const float value =  str.toFloat();
    const quint32 *i = reinterpret_cast<const quint32 *>(&value);

    QByteArray ba;
    ba.append(char(*i >> 24));
    ba.append(char(*i >> 16));
    ba.append(char(*i >>  8));
    ba.append(char(*i >>  0));
    return ba.toHex().toUpper();

}

 

②16进制字符串转浮点

float MainWindow::ieee754_hex_str_to_float(QString str){

    const QByteArray ba = QByteArray::fromHex(str.toLatin1());

    if (ba.size() != 4){
        return 0;
    }

    quint32 word = quint32((quint8(ba.at(0)) << 24) |
                           (quint8(ba.at(1)) << 16) |
                           (quint8(ba.at(2)) <<  8) |
                           (quint8(ba.at(3)) <<  0));

    const float *f = reinterpret_cast<const float *>(&word);
    return *f;

}

 

QT实现IEEE754转换

原文:https://www.cnblogs.com/hiwjy/p/14901756.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!