奇怪的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)。
然后你的字符串,然后是终止空。
的确,我怎么能注意到它。可能是因为qInfo()显示一个格式化的字符串而不是字节。谢谢! – lll