C++ 将QString转换为Ascii值&;反之亦然

C++ 将QString转换为Ascii值&;反之亦然,c++,qt,qt5,qstring,C++,Qt,Qt5,Qstring,我有一个QString StrData=“abcd”,我想得到该字符串的Ascii十六进制值,反之亦然 例如,从“abcd”到“61 62 63 64”以及从“61 62 63 64”到“abcd” 我设法得到十六进制的Ascii值,但不知道如何取回它 Qstring StrData = "abcd"; Qstring HexStrData; for (int i = 0; i < StrData.length(); i++) { HexStrData.append(Qstring

我有一个
QString StrData=“abcd”
,我想得到该字符串的
Ascii
十六进制值,反之亦然

例如,从
“abcd”到“61 62 63 64”
以及从
“61 62 63 64”到“abcd”

我设法得到十六进制的Ascii值,但不知道如何取回它

Qstring StrData = "abcd";
Qstring HexStrData;
for (int i = 0; i < StrData.length(); i++) {
    HexStrData.append(Qstring::number(StrData.at(i).unicode(), 16));
    HexStrData.append(" ");
}
Qstring StrData=“abcd”;
Qstring-HexStrData;
对于(int i=0;i
示例

QString hex("0123456789ABCDEF");
QString strStr("abcd");
QString hexStr;
for (int ii(0); ii < strStr.length(); ii++)
{
    hexStr.append(hex.at(strStr.at(ii).toLatin1() >> 4));
    hexStr.append(hex.at(strStr.at(ii).toLatin1() & 0x0F));
}
qDebug() << hexStr;
QByteArray oldStr = QByteArray::fromHex(hexStr.toLocal8Bit());
qDebug() << oldStr.data();

要进行第一次转换,可以使用以下方法:

QString StrData = "abcd";
qDebug()<<"before "<< StrData;
QStringList numberString;
for(const auto character: StrData){
    numberString << QString::number(character.unicode(), 16);
}
QString HexStrData= numberString.join(" ");

qDebug()<<HexStrData;

由于问题特别提到ASCII编码,
QString::toLatin1()
比本例中的
QString::toLocal8Bit()
更有意义。
QString StrData = "abcd";
qDebug()<<"before "<< StrData;
QStringList numberString;
for(const auto character: StrData){
    numberString << QString::number(character.unicode(), 16);
}
QString HexStrData= numberString.join(" ");

qDebug()<<HexStrData;
QString str = QByteArray::fromHex(HexStrData.remove(" ").toLocal8Bit());
qDebug()<<str;
before  "abcd"
"61 62 63 64"
"abcd"