通过QDataStream在字节数组上读/写

时间:2016-07-02 18:17:37

标签: c++ qt qdatastream

我有字节图像数组我希望将此字节数组写入另一个字节数组,并在第二个字节数组上添加另一个值,我正在使用此代码,但我觉得有些不对劲

 QByteArray byteArray;

 QDataStream ds(&byteArray,QIODevice::ReadWrite);

 ds<<(qint32)20;

 ds<<bArray;

 qint32 code;

 ds>>code;

当我跟踪 ds&gt;&gt;代码时,它总是有0值,但实际上它必须有20个值而我使用 ds.resetStatus(); 但它再次返回0值

1 个答案:

答案 0 :(得分:2)

我怀疑QDataStream::operator<<函数设置了一些指针/迭代器/索引,指向下一个可以在下一次调用时开始插入数据的位置。 QDataStream::operator>>可能会从同一位置开始阅读。

QDataStream::resetStatus()不会更改对象读/写位置。它只是将状态重置为QDataStream::Ok,以允许您在发生错误后从流中读取。

您可以使用两个QDataStream个对象 - 一个用于写入QByteArray,另一个用于从同一个QByteArray读取。

QByteArray byteArray;

QDataStream ds_w(&byteArray,QIODevice::WriteOnly);
QDataStream ds_r(&byteArray,QIODevice::ReadOnly);

ds_w << (qint32)20;

ds_w << bArray;

qint32 code;

ds_r >> code;