Hex nach Dezimal
-
Hallo,
wie kann ich einen QString der ein Hex-Zahl darstellt in eine QString umwandeln, der das in Dezimal darstellt?
Der Code unten funktioniert nicht richtig. Mit grossen Zahlen geht es nicht. Bei "BBBBBBBB" bekomme -69 -69 -69 -69 statt 187 187 187 187.QString h="BBBBBBBB";//; ->187 187 187 187 -69 -69 -69 -69 QByteArray array{QByteArray::fromHex(h.toUtf8())}; QString result=""; for (int i=0; i<array.length(); i++) { result+=QString::number(array[i]); if (i!=array.length()-1) { result+=" "; } }
-
@asd1 Das ist ein Darstellungsproblem.
Die Bitmuster für -69 und 187 sind identisch.
Ein Byte ist vorzeichenbehaftet. Du must casten.
-
QByteArray array{QByteArray::fromHex("BBBBBBBB")}; for (int i=0; i<array.length(); i++) { array[i]=static_cast<quint8>(array[i]); }
Klappt leider nicht. Auch nicht mit uchar. Kommt immer -69.
-
@asd1 sagte in Hex nach Dezimal:
Ich nehme mal an, dass ich nach der Definition von array jedes Element des Array casten muss. Zu welchem Datentyp muss ich es casten? Habe es mit char versucht, aber ohne Erfolg.
Ein
char
ist für Zeichen. Es ist System/Compiler/Einstrellungsabhängig ob dassigned
oderunsigned
ist.
Darum musst du explizitunsigned char
angeben.PS. Oder (wegen Qt)
quint8
oderuchar
-
@DirkB
Ok. Habe es hinbekommen, habe es mit reinterpret_cast<const uchar *> hinbekommen.