前言
與傳感器通信,常使用串口通信,協議為Modbus協議,很多時候串口收發的數據是十六進制的,且十進制還包括有符號(正數),無符號(負數)。而我們處理的數據是10進制的,這就需要我們對16進制進行轉換,這篇博客主要是附上在Qt下的進制轉換代碼
1. 16進制轉換成正整數10進制
QString qnum="EA6B"; int num = qnum.toInt(&ok,16); qDebug()<<num<<endl; //輸出結果是60011
2. 16進制轉有符號10進制
QString qnum="EA6B"; int 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; //符號位 } qDebug()<<num<<endl;