我有一个QString StrData = "abcd"
,我希望得到该字符串的十六进制的Ascii
值和反之亦然。
例如来自"abcd" to "61 62 63 64"
和"61 62 63 64" to "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(" ");
}
答案 0 :(得分:0)
实施例
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();
节目:
"61626364"
abcd
答案 1 :(得分:0)
要进行第一次转换,您可以使用以下方法:
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"