——帶符號十進制與兩字節十六進制之間的轉換
前言:兩者轉換一般用在串口通信的數據處理上,上位機接收到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
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
