通过 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;
我有字节图像数组,我想将这个字节数组写入另一个字节数组,并在第二个字节数组上添加一些其他值,我正在使用这段代码,但我认为出了点问题
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;