2013-07-15 23 views
5

Ich weiß, das ist eine sehr grundlegende Frage, aber ich bin Neuling in Qt und ich weiß es nicht zu tun. Ich versuche, einen QString-Wert (wie "AA110011") in Hexadezimal zu konvertieren. Ich möchte 0xaa110011 erhalten. Ich habe mit diesem Code versucht:Qt: QString in Hexadezimal konvertieren

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; 
    } 
} 

ich im Gedächtnis an vairable "[0]" der Wert 0a 0a 01 01 00 00 01 01 erhalten, und ich weiß nicht, wie konnte ich aa 11 00 erhalten 11.

Können Sie mir helfen? Vielen Dank. .

+1

Gibt es einen Grund, warum Sie nicht 'int QString :: toInt (bool * ok = 0, int base = 10) const 'verwenden? – mah

+1

'' int value = QString ("AA110011"). ToInt (NULL, 16); '' zusätzlich zu mah. Wenn Sie es als "char *" nur Typcast benötigen: '' char c [4-i] = (char) ((Wert >> i * 8) & 0xFF) '' –

Antwort

2

Sobald Sie eine QString Sie folgende

tun können

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

reference

+0

Das gibt den Hexadezimalwert des ASCII-codiert String-Inhalt, nicht die Nummer. –

+1

In welcher Form willst du eine Nummer ?? Sie können eine Zahl in einen String umwandeln, indem Sie die setNum (decimalNumber, 16) -Methode verwenden, und in ähnlicher Weise können Sie jede Basis in Form von String erhalten, aber es gibt keinen separaten Datentyp für Hexadezimal in QT –

5

Versuchen QString::toInt, QString::toUInt, QString::toLong usw., zum Beispiel:

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

qDebug() << parsedValue; 

Das zweite Argument ist die Basis, 16 in diesem Fall für hexadezimal.

Diese Lösung funktioniert, wenn Ihre Zeichenfolge in eine unsigned long lange oder kürzere passt - es funktioniert nicht, wenn Sie beliebig lange Zeichenfolgen auf diese Weise konvertieren möchten.

Verwandte Themen