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

結果:\x16\x00\x00\x00\x06test2\x00奇妙QByteArray

なぜそれが4バイトの代わりに1を使用していますか?私はそれがunsigned charであることを明示的に言います。舞台裏でいくつかのメモリが整列していますか?私はそれをオフにすることはできますか?

EDIT:私がchar*を書き込むときに起きるように見えますが、それはどこからも最初の3バイトを追加します。

答えて

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

\x16あなたはuint8です。

\x00\x00\x00\x06は固定長で、文字列長の4バイトのヘッダー(明らかにnullを含む)です。

文字列の後に終端nullが続きます。

+1

実際、どのように私はそれに気づくことができませんでした。たぶん、qInfo()は単なるバイトではなくフォーマットされた文字列を表示するからです。ありがとう! – lll