8

これは非常に基本的な質問であることは知っていますが、私は Qt の初心者であり、その方法を知りません。QString 値 (「AA110011」など) を 16 進数に変換しようとしています。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;
    }
}

Memory at Vairable "[0]" で値 0a 0a 01 01 00 00 01 01 を取得しましたが、aa 11 00 11 を取得する方法がわかりません。

私たちを手伝ってくれますか?ありがとう。

4

4 に答える 4

9

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;

2 番目の引数は基数で、この場合は 16 で 16 進数です。

この解決策は、文字列が unsigned long long または short に収まる場合に機能します。任意の長い文字列をそのように変換したい場合は機能しません。

于 2013-07-15T12:27:05.490 に答える
0

QByteArray::fromHex()を使用する

QByteArray a = QByteArray::fromHex(s.toLatin1())
qDebug() << a;
于 2020-07-07T10:35:26.317 に答える