使用QFile 将多种类型的数据保存成二进制文件,其中的int类型数据在读文件时发现不对
例如200000,读取时变成212992。
200000 = 0x00030d40
212992 = 0x00034000
其中0d部分没有被读取,打开保存的二进制文件,在文件所保存的数据时正确的
原本的文件修改太多,于是针对这个问题专门写了个小程序实验
实在找不到解决方法,求大牛指点迷津
写文件部分
QDir *temp = new QDir;
bool exist = temp->exists("temp");
if(exist)
QMessageBox::warning(this,QString::fromUtf8("创建文件夹"),QString::fromUtf8("文件夹已经存在!"));
else
{
bool ok = temp->mkdir("temp");
if( ok )
QMessageBox::warning(this,QString::fromUtf8("创建文件夹"),QString::fromUtf8("文件夹创建成功!"));
}
QFile file("temp/myfiless.xox");
qDebug() << file.open(QIODevice::WriteOnly );
QDataStream out(&file);
out << (quint32)0xA0B0C0D0;
out << (qint32) 123;
out.setVersion(QDataStream::Qt_4_8);
out << QString("xaxaxaxa");
out << QString("aaaaaaaaaa");
out << (int) 200000;
out << QString::fromUtf8("试试时");
读文件部分
QString path = QFileDialog::getOpenFileName(this,
tr("Open File"),
".",
tr("Text Files(*.xox)"));
if(!path.isEmpty()) {
QFile file(path);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QMessageBox::warning(this, tr("Read File"),
tr("Cannot open file:\n%1").arg(path));
return;
}
QDataStream in(&file);
quint32 magic;
in>>magic;
if(magic !=0xA0B0C0D0)
{
QMessageBox::warning(this, tr("Read File"),
QString::fromUtf8("格式不对"));
return;
}
qint32 version;
in>>version;
if(version < 100)
return;
else
in.setVersion(QDataStream::Qt_4_8);
QString str;