Ich habe ein bisschen Probleme mit der Umwandlung eines Zeichens in QString, da es weiterhin ASCII-Zeichen statt der Summe, die ich gerne in seinem Hex Byte-Form (z. B. ffd0
) sein würde.Behandeln von ASCII-Zeichen in einem Zeichen zu QString-Konvertierung
Ein bisschen von einem Spaziergang durch den Code, den ich habe - ich habe eine Reihe von Hex-Werte (A1-B2-C3
), die in einem QByteArray ist und durch eine Prüfsumme Funktion operiert ich geschaffen habe. Die Ausgabe ist ein Prüfsummenbyte (ffd0
) und es wird richtig auf dem Terminal mit printf("%x", checkSum(output));
gedruckt, aber wenn ich die ui Funktionen von Qt verwende, druckt es Müll aus.
Was ist der effizienteste Weg, dies auf dem Qt Creator zu tun? Hier
ist einige zusätzliche Klarstellung:
Eingang:
A1-B2-C3
Ausgang:
Etikett - "" (Nonsenical ascii und manchmal die ocasional Katakana und Hiragana, rein abhängig vom eingegebenen Hex)
printf - ffd0
(Welche die richtige Leistung und das ist, dass ich als Text des Etiketts und LineEdit setzen mag)
-Code Bit:
char MainWindow::checkSum(QByteArray &b)
{
char val = 0x00;
char i;
foreach (i, b)
{
val ^= i;
}
return val;
}
...
QChar resultCh = checkSum(output);
ui->lineEdit->setText(resultCh);
ui->outputLabel->setText(resultCh);
printf("%x\n", resultCh);
...
Das Problem ist, dass Ihre checkSum nicht wirklich ein Charakter ist. Es ist eine vorzeichenbehaftete ganze Zahl, die 8 Bits lang ist. Sie müssen diese vorzeichenbehaftete Ganzzahl in eine Textzeichenfolge konvertieren - behandeln Sie sie nicht als Unicode-Zeichen (was Sie gerade tun). –