我有字节图像数组我想将此字节数组写入另一个字节数组,并在第二个字节数组上添加另一个值,我正在使用此代码,但我认为出了点问题
QByteArray byteArray;
QDataStream ds(&byteArray,QIODevice::ReadWrite);
ds<<(qint32)20;
ds<<bArray;
qint32 code;
ds>>code;
当我跟踪 ds >>代码时,它始终具有0值,但实际上它必须具有20个值,并且我使用了 ds.resetStatus(); ,但它再次返回0值
最佳答案
我怀疑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;