奇怪的QByteArray与QDataStream行为

问题描述:

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个字节。

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

\x16是你uint8。

\x00\x00\x00\x06是一个固定的大小,四个字节的字符串长度的头(显然包括null)。

然后你的字符串,然后是终止空。

+1

的确,我怎么能注意到它。可能是因为qInfo()显示一个格式化的字符串而不是字节。谢谢! – lll