Hej!
Jag har flera binära filer (som är typen sparfiler) som är skapade genom QDataStream. Filen har, för mig, okända datatyper och struktur. Hur kan jag läsa av filerna?
Min början är:
Men det enda jag får ut är:
Koden som jag försöker efterlikna är denna röra av pseudo:
Jag har flera binära filer (som är typen sparfiler) som är skapade genom QDataStream. Filen har, för mig, okända datatyper och struktur. Hur kan jag läsa av filerna?
Min början är:
Kod:
#include <QCoreApplication> #include <QTextStream> #include <QDataStream> #include <QString> #include <QDir> #include <QFile> #include <QFileInfo> #include <QByteArray> void readFile(QString path){ QFile file(path); if(!file.open(QIODevice::ReadOnly)){ qWarning() << file.errorString(); return; } QFileInfo fileinf(file); qInfo() << fileinf.fileName() << fileinf.size(); QDataStream in (&file); QByteArray ba(32,0); in >> ba; qInfo() << ba; file.close(); } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QString path = QDir::currentPath() + QDir::separator() + "joe.blr"; qInfo() << path; readFile(path); return a.exec(); }
Men det enda jag får ut är:
Kod:
"/home/opt/qt-projects/test/build/Desktop_Qt_6_7_2-Debug/joe.blr" "Joe.blr" 450 " "
Koden som jag försöker efterlikna är denna röra av pseudo:
Kod:
QFileInfo::QFileInfo(file,pQVar5); QString::~QString(local_4c); local_8._0_1_ = 8; QString::~QString(local_50); QFileInfo::completeBaseName(file,local_1c); local_8._0_1_ = 9; QFileInfo::absoluteFilePath(file,local_2c); local_8._0_1_ = 10; QFile::QFile(file2,local_2c); local_8._0_1_ = 0xb; QFile::open(file2,1); QDataStream::QDataStream(in,(QIODevice *)file2); piVar11 = &local_3c; local_8._0_1_ = 0xc; this = QDataStream::operator>>(in,&local_54); QDataStream::operator>>(this,piVar11); uVar7 = FUN_0041be00(); if ((local_54 == uVar7) && (iVar3 = FUN_0047e6a0(), local_3c <= iVar3)) { QDataStream::setVersion(in,0xc); FUN_00479b30((int)local_94); local_8 = CONCAT31(local_8._1_3_,0xd); FUN_00487ed0(local_94,local_3c); FUN_00479f40(in,(int)local_94); QFileDevice::close((QFileDevice *)file2); this_00 = (undefined (*) [16])operator_new(0x20); *this_00 = ZEXT816(0); this_00[1] = ZEXT816(0); QString::QString((QString *)this_00); QString::QString((QString *)(*this_00 + 4)); QString::QString((QString *)(*this_00 + 8)); QString::QString((QString *)(*this_00 + 0xc)); QString::QString((QString *)(this_00 + 1)); QString::QString((QString *)(this_00[1] + 4)); QString::QString((QString *)(this_00[1] + 8)); QString::QString((QString *)(this_00[1] + 0xc)); local_30 = this_00; QString::operator=((QString *)(*this_00 + 0xc),local_1c); pQVar5 = FUN_0047de20(local_94,local_58); QString::operator=((QString *)this_00,pQVar5); QString::~QString(local_58); pQVar5 = FUN_00488ba0(local_94,local_5c); QString::operator=((QString *)(*this_00 + 4),pQVar5); QString::~QString(local_5c); iVar10 = FUN_00447900((int)local_94); if (iVar10 == 0) { ppcVar12 = ¶m_3_004e52a8; } else { iVar10 = FUN_00447900((int)local_94); if (iVar10 == 1) { ppcVar12 = (char **)"Right"; } else { ppcVar12 = &this_004e9560; } } QString::operator=((QString *)(*this_00 + 8),(char *)ppcVar12); pQVar5 = local_60; pvVar8 = (void *)FUN_0049dbc0((int)local_94); pQVar5 = FUN_0047d1f0(pvVar8,pQVar5); QString::operator=((QString *)(this_00 + 1),pQVar5); QString::~QString(local_60); pQVar5 = local_64; pvVar8 = (void *)FUN_0049dbc0((int)local_94); pQVar5 = FUN_00496280(pvVar8,pQVar5); QString::operator=((QString *)(this_00[1] + 4),pQVar5); QString::~QString(local_64); pQVar5 = local_68; pvVar8 = (void *)FUN_0049dbc0((int)local_94); pQVar5 = FUN_0047daa0(pvVar8,pQVar5); QString::operator=((QString *)(this_00[1] + 8),pQVar5); QString::~QString(local_68); pQVar5 = local_6c; pvVar8 = (void *)FUN_0049dbc0((int)local_94); pQVar5 = FUN_0047dac0(pvVar8,pQVar5); QString::operator=((QString *)(this_00[1] + 0xc),pQVar5); QString::~QString(local_6c); FUN_0049e920(local_20,&local_30); FUN_00479e20((int)local_94); QDataStream::~QDataStream(in); QFile::~QFile(file2); QString::~QString(local_2c); QString::~QString(local_1c); local_8 = CONCAT31(local_8._1_3_,3); QFileInfo::~QFileInfo(file); iVar10 = (int)local_14; } else { QFileDevice::close((QFileDevice *)file2);