【问题标题】:Weird QByteArray with QDataStream behaviour具有 QDataStream 行为的奇怪 QByteArray
【发布时间】:2017-11-04 00:21:04
【问题描述】:
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 个字节。

【问题讨论】:

    标签: c++ qt serialization


    【解决方案1】:
    \x16\x00\x00\x00\x06test2\x00
    

    \x16 你是 uint8。

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

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

    【讨论】:

    • 确实,我怎么没注意到。可能是因为 qInfo() 显示格式化的字符串而不仅仅是字节。谢谢!
    猜你喜欢
    • 2020-07-10
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多