2017-11-04 2 views
1
QByteArray byteArray; 
QDataStream dataStream(&byteArray, QIODevice::WriteOnly); 
dataStream << (quint8)22; 
dataStream << "test2"; 
qInfo() << byteArray; 

Ergebnis: \x16\x00\x00\x00\x06test2\x00Sonderbare QByteArray mit QDataStream Verhalten

Warum ist es mit 4 Bytes statt 1? Ich sage ausdrücklich, dass ich möchte, dass es unsigned char ist. Gibt es einen Speicher, der sich hinter den Kulissen befindet? Kann ich es ausschalten?

EDIT: Es scheint nur zu passieren, wenn ich schreibe char* es fügt 3 Bytes am Anfang aus dem Nichts.

Antwort

2
\x16\x00\x00\x00\x06test2\x00 

\x16 Sie sind Uint8.

\x00\x00\x00\x06 ist eine feste Größe, vier Byte Header der String-Länge (scheinbar einschließlich der Null).

Dann Ihre Zeichenfolge, gefolgt von einem abschließenden Null.

+1

In der Tat, wie konnte ich es nicht bemerken. Wahrscheinlich, weil qInfo() eine formatierte Zeichenfolge statt nur Bytes anzeigt. Vielen Dank! – lll