簡體   English   中英

Qt:將 QString 轉換為十六進制

[英]Qt: Convert QString to Hexadecimal

我知道這是一個非常基本的問題,但我是 Qt 的新手,我不知道該怎么做。 我正在嘗試將 QString 值(如“AA110011”)轉換為十六進制。 我想獲得 0xaa110011。 我試過這個代碼:

QByteArray b = aString.toUtf8();

for (int i = 0; i < b.length(); i++ )
{
    if ( b[i] >= 65 && b[i] <= 70 )
    {
        b[i] = b[i] - 55;
    }
    else if (b[i] >= 48 && b[i] <= 57)
    {
        b[i] = b[i] - 48;
    }
}

我在內存變量“[0]”中獲得了值 0a 0a 01 01 00 00 01 01,但我不知道如何獲得 aa 11 00 11。

你能幫我嗎? 謝謝。

嘗試的QString :: toIntQString的:: toUIntQString的:: toLong等,例如:

const QString str = QLatin1String("AA110011");
bool ok;
const unsigned int parsedValue = str.toUInt(&ok, 16);
if (!ok) {
    //Parsing failed, handle error here
}

qDebug() << parsedValue;

第二個參數是基數,在這種情況下是十六進制的 16。

如果您的字符串適合 unsigned long long 或更短的字符串,則此解決方案將起作用 - 如果您想以這種方式轉換任意長的字符串,則該解決方案將不起作用。

只需使用它,稍后再感謝我。

 QString prgName = query.value(1).toString();
 prgName.toLatin1().toHex();

擁有 QString 后,您可以執行以下操作

QString res = string.toAscii().toHex();
qDebug() << res;

參考

使用QByteArray::fromHex()

QByteArray a = QByteArray::fromHex(s.toLatin1())
qDebug() << a;

暫無
暫無

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

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