Ich arbeite mit QT Creator (MinGW 5.3.0 C++, Windows) und möchte einige serielle Verbindung Hex-Daten schreiben. Ich habe einen Weg gefunden, aber da stimmt etwas nicht. Nur eine Hex-Datei wird falsch konvertiert.Convert Char in Bytearray mit Hex-Daten 0x31
Ich hoffe, dass mein Code hilft, zu verstehen.
static const unsigned char mytestUC[] = {0x04,0x31,0xD2,0x01, 0xA1};
enum { NBYTES = sizeof(mytestUC) };
const char *mytest = reinterpret_cast<const char*>(mytestUC);
QByteArray testdata = QByteArray::fromRawData(mytest, sizeof(mytest)+1);
qDebug()<<"testdata "<<testdata;
Ich würde denken, sollte die Ausgabe sein: Testdaten "\ x04 \ 31 \ Xd2 \ x01 \ xA1"
Aber im wirklichen sieht es wie folgt aus: Testdaten "\ x04" "1 \ xD2 \ x01 \ xA1 "
Ich habe einen anderen Weg versucht, meine Hex-Daten direkt in das QBytearray mit append zu schreiben.
testdata .append((char) 0x04);
testdata .append((char) 0x31);
testdata .append((char) 0xD2);
testdata .append((char) 0x01);
testdata .append((char) 0xA1);
Warum konvertiert das Programm nur die 0x31 in die falsche Richtung und wie kann ich es besser machen? Gibt es eine einfachere Möglichkeit, Hex-Daten in QBytearray zu schreiben?
Weißt du nicht, dass mytestUC bereits ein Byte-Array ist? – deviantfan
... und dass 0x31 '1' ist? – deviantfan
Nein, ich weiß es vorher nicht. Ich habe versucht, mytestUC mit Serial-> write zu verwenden, aber es funktioniert nicht, denn "write" benötigt ein const char und ich brauche ein unsigned char. Einige Hex-Daten sind größer als 0x7F. Jap 0x31 ist 1, aber ich brauche es in Hex zu senden. – knowless