16进制转ascii
int QHelper::changefromHex_to_ascii(QString str)
{
int ch = str.toInt(0,16);
if ((ch >= '0') && (ch <= '9')) {
return ch - 0x30;
} else if ((ch >= 'A') && (ch <= 'F')) {
return ch - 'A' + 10;
} else if ((ch >= 'a') && (ch <= 'f')) {
return ch - 'a' + 10;
} else {
return (-1);
}
}
ascii转16进制
QString QHelper::acsii_to_Hex(QString str)
{
QString hex,ret ="";
for(int i = 0; i<str.size(); i++)
{
hex = str[i];
if(hex == ' ')
continue;
int hexData = hex.toInt(0,16);
if((hexData>=0)&&(hexData<=9))
hexData+=0x30;
else if((hexData>=10)&&(hexData<=15))
hexData = hexData-10+'A';
ret += QString::number(hexData,16);
if(i!=str.size()-1)
ret += " ";
}
return ret;
}
16进制转ascii-------程序使用
hexStr = "02 30 30 37 30 30 30 37 30
30 34 42 31 30 38 42 30 03 32 38";
....
strSum += hexStr.at(i+7);//3
strSum += hexStr.at(i+8);//7
one = changefromHex_to_ascii(strSum);
strSum = "";
......
qDebug()<<"strSum "<<strSum;
qDebug()<<"one "<<one;
}
输出
即16进制 “37”对应ascii “7”,其他类似。
strSum "37"
one 7
strSum "37"
one 7
strSum "42"
one 11
strSum "42"
one 11
ascii转16进制----程序使用
senddata= "7000 7000";
str = acsii_to_Hex(senddata);
qDebug()<<str;
输出
ascii “7”对应16进制“37”,其他类似。
"37 30 30 30 37 30 30 30"