QT學習筆記——十進制與十六進制轉換


——帶符號十進制與兩字節十六進制之間的轉換

前言:兩者轉換一般用在串口通信的數據處理上,上位機接收到QByteArray類型的數據,轉成QString類型,然后進行字符串截取拼接,獲取數據。因此,下文兩字節十六進制的數據類型是QString。十進制各種數據類型轉換相對簡單。下文帶符號十進制數據類型是整型。

QByteArray byte = serial->readAll();

QString qstr = byte.toHex();

例子:0xFD67 和 -665

1、帶符號十進制 轉 兩字節十六進制

int main(int argc, char *argv[]){

    int num=-665;//正負皆可

    QString qnum= QString::number(num,16).right(4);//裁剪字符串前面多余的f

    std::cout<<qnum.toUpper().toStdString()<<std::endl;

    return 0;

}

輸出:FD67

2、兩字節十六進制 轉 帶符號十進制

int main(int argc, char *argv[]){

    int num;bool ok;

    QString qnum = "FD67";

    num = qnum.toInt(&ok,16);

    if(!(qnum.at(0)>='0'&&qnum.at(0)<='7')){//非正數

        num = num & 0x7FFF;       //清除符號位

        num = ~num;                      //反碼

        num = num & 0x7FFF;        //清除左邊多余位

        num = num + 1;                 //加1

        num = num * -1;                //符號位

    }

    std::cout<<num<<std::endl;

    return 0;

}

 



作者:Cyfeng
鏈接:https://www.jianshu.com/p/938bd6393405
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM