奇怪的QByteArray与QDataStream行为

时间:2017-11-04 00:21:05

标签: c++ qt serialization

QByteArray byteArray;
QDataStream dataStream(&byteArray, QIODevice::WriteOnly);
dataStream << (quint8)22;
dataStream << "test2";
qInfo() << byteArray;

结果:\x16\x00\x00\x00\x06test2\x00

为什么使用4个字节而不是1个字节?我明确地说我希望它是unsigned char。幕后是否有一些记忆对齐?我可以把它关掉吗?

编辑:似乎只有在我写char*时,它才会从最初开始增加3个字节。

1 个答案:

答案 0 :(得分:2)

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

\x16你是uint8。

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

然后是你的字符串,后跟一个终止空值。