2

我有字节图像数组我想将此字节数组写入另一个字节数组,并在第二个字节数组上添加一些另一个值,我正在使用此代码,但我认为有问题

 QByteArray byteArray;

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

 ds<<(qint32)20;

 ds<<bArray;

 qint32 code;

 ds>>code;

当我跟踪ds>>code它总是有 0 值但实际上它必须有 20 值并且我使用了 ds.resetStatus(); 但它再次返回 0 值

4

1 回答 1

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;
于 2016-07-02T18:36:12.863 回答