簡體   English   中英

在 Qt 中將 QString 轉換為 Ascii 值,反之亦然

[英]Converting QString to Ascii value & Vice Versa in Qt

我有一個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(" ");
}

例子

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

要進行第一次轉換,您可以使用以下方法:

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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM