码农
1 人赞同了该文章
我在使用QByteArray保存数据到QDataStream时,二进制文件中,发现头部多出4个字节,就像这样。
网上搜了一些文章,说这4个字节表示数据存储的长度,我比较关心怎样才可以去掉这4个字节,网上方法不详。
于是我调试了一下Qt源码,发现是这样的。
QDataStream的writeBytes接口实现中,会先写入数据长度len,所以调用writeBytes就会导致此现象。
/*! Writes the length specifier \a len and the buffer \a s to the stream and returns a reference to the stream. The \a len is serialized as a quint32, followed by \a len bytes from \a s. Note that the data is \e not encoded. \sa writeRawData(), readBytes() */QDataStream&QDataStream::writeBytes(constchar*s,uintlen){CHECK_STREAM_WRITE_PRECOND(*this)*this