qt 字符串16进制转ascii 字符串ascii转16进制字符串

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"

你可能感兴趣的:(QT,C++)