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

結果:\x16\x00\x00\x00\x06test2\x00奇怪的QByteArray與QDataStream行爲

爲什麼使用4個字節,而不是1呢?我明確地說,我希望它是unsigned char。在幕後是否有一些內存對齊?我可以關閉它嗎?

編輯:它似乎只發生在我寫char*它從頭開始增加3個字節。

回答

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

\x16是你uint8。

\x00\x00\x00\x06是一個固定的大小,四個字節的字符串長度的頭(顯然包括null)。

然後你的字符串,然後是終止空。

+1

的確,我怎麼能注意到它。可能是因爲qInfo()顯示一個格式化的字符串而不是字節。謝謝! – lll