Ich versuche zu verstehen, wie QByteArray und String in qt zusammenarbeiten. Also habe ich den folgenden Fall, wo ich ein QByteArray im Speicher erstellen.Erhalten eines QByteArray von einem QString
QByteArray qba;
quint8 version = 1;
qba << version;
quint8 type = 122;
qba << type;
qDebug() << qba.length() << " " << QString(qba);
Die Debug-Anweisung druckt:
2 "\u0001z"
So habe ich 2 Byte Daten und die String-Darstellung extrahiert wird.
Nun, was ich tun möchte, ist mit der String-Darstellung zu beginnen (die mir als eine rohe C++ Char-Array gegeben wird) und erstellen Sie die QByteArray
Darstellung. So schaffe ich das Array wie folgt:
char msg[] = { '\\', 'u', '0', '0', '0', '1', 'z', '\0' };
QString testStr = QString::fromUtf8(msg);
QByteArray testRaw = testStr.toUtf8();
qDebug() << testRaw.length() << " " << QString(testRaw);
nun diese Drucke:
7 "\\u0001z"
Ich bin nicht sicher, wie ich aus einem solchen Zeichenfeld beginnen und die Byte-Array-Darstellung erhalten. Ich bin nicht sicher, ob dies ein String-Codierung Problem ist, aber ich konnte diese Binärdarstellung nicht neu erstellen, unabhängig davon, welche String Methode, die ich versuchte (fromLatin1
, fromUtf16
etc.)
ich verwende Qt 5.9
ich geschrieben habe antworte direkt nach deiner Bearbeitung. Jetzt sehe ich, dass deine Frage nicht präzise ist. Warum brauchst du diese Konvertierung, was du damit machen musst? –
Ich brauche diese Konvertierung, weil ich eine Bibliothek libdmtx benutze, die Datenmatrix-Bilder dekodiert. Der Decoder gibt ein 'const char *' zurück und ich versuche, die binäre Darstellung im Grunde zu erhalten, um sie zu parsen. Ich nehme an, die zurückgegebene Zeichenfolge ist UTF-8 kodiert, aber ich bin mir nicht sicher. Die Dokumentation von ihnen sagt nichts. Im Moment versuche ich nur zu reproduzieren, wie ich zwischen QByteArray und const char * hin und her gehen kann, da ich die Codierung kenne. – Luca