通过 QDataStream 读取/写入字节数组

read / write on byte array by QDataStream

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

 QByteArray byteArray;

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

 ds<<(qint32)20;

 ds<<bArray;

 qint32 code;

 ds>>code;

当我跟踪 ds>>code 它总是有 0 个值,但实际上它必须有 20 个值,我使用 ds.resetStatus( ); 但它又是 return 0 值

我怀疑 QDataStream::operator<< 函数设置了某种 pointer/iterator/index 以指向下一个位置,在下一次调用时它们可以开始插入数据。 QDataStream::operator>> 可能从同一位置开始读取。

QDataStream::resetStatus() 不会改变对象 reads/writes 所在的位置。它只是将状态重置为 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;