ich einen QString in seine hexadezimale Darstellung konvertieren werde, alles funktioniert gut, bis ich einige Sonderzeichen wie ‚€‘ setzen:QString zu utf16 hexadezimale Darstellung für nicht ASCII-Zeichen konvertieren
QString l_str = "How are you";
qDebug() << "hex: " << l_str.toUtf8().toHex();
qDebug() << "readable:" << l_str.toUtf8();
druckt:
hex: "486f772061726520796f753f"
lesbar: "Wie geht es dir?"
Und es so einfach, die Hex-Werte in ASCII umzuwandeln zurück, wobei nur zwei Werte (48 = H etc.) die hexadezimale Darstellung eines ASCII-Zeichen es genügt, alle zwei Zeichen iterieren und zu konvertieren.
Wenn ich gesetzt l_str = "H € w ar € Sie?", Und das Hex € Zeichen in UTF-8 ist "e282ac", die 6-Werte sind, ist das Ergebnis, wie folgend:
hex: " 48 e282ac 77206172e282ac20796f753f“
aber wie kann ich es zurück in eine lesbare Zeichenfolge?
Es wäre besser, eine Umwandlung, die in einem utf16 String ergibt:
hex: "0048006F20AC00200061007220AC00200079006F0075003F"
Bedenken Sie, dass die "Ho € ar € Sie" string zur Laufzeit erstellt wird (also kein QStringLiteral verfügbar), und ich kann das Auto Schlüsselwort nicht verwenden.
Was meinst du mit "bekomme es zurück zu einer lesbaren Zeichenfolge" genau?Wie liest du die Zeichenfolge? – peppe
Ich lese "ho € ar € you" von einem Webserver, dann muss ich es in utf16 hex Array konvertieren, sende es an ein Gerät, wo ich es wieder in "ho € ar € you" umwandeln muss. – Giancarlo
Und welcher dieser Schritte schlägt fehl? – peppe