串口通讯解析补码跟十六进制ASCLL转化问题
按位不够高位补码
QString str = "12";
int i = str.size();
unsigned int ux = i;
Qtring s = QString("%1").arg(ux, 4, 10, QLatin1Char('0'));//按位十进制补0
效果:
获取str=12;
补码之后s=0012;
字符类型转化ASCLL十进制码值
QString qstr_h= "12";
QByteArray byte = qstr_h.toUtf8();
QString q="";
for(int j = 0; j < qstr_h.size(); j++)
{
int q1= byte.at(j);
q+= QString::number(q1);
}
return q;
效果:
获取qstr_h="12";
转化之后 q="4950";
ASCLL十六进制的码值和十六进制补位
Qtring s = QString("%1").arg(ux, 4, 16, QLatin1Char('0'));
q+= QString::number(q1);
上述是qt的编译环境下 !
小提示:
c语言中
声明十六进制开头加0x 八进制/0 二进制补0 十进制缺省
输出 十进制 %d 十六进制 %#x