具有 QDataStream 行为的奇怪 QByteArray

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

否认
\x16\x00\x00\x00\x06test2\x00

\x16 你是uint8吗?

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章