前言
与传感器通信,常使用串口通信,协议为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;