Seite 1 von 1
Binäre Daten lesen
Verfasst: 26. November 2006 08:51
von moechild
Servus erstmal,
ich versuche schon die ganze Zeit binäre Daten einzulesen, die mir eine andere Software als binäre Datei gespeichert hat.
Diese Daten sind Zahlen des float-Typs.
Ich habe es mit dem Beispiel von Qt probiert,....doch wie soll ich von dem String str oder der Variablen a meine Zahlen bekommen.
Habe schon im Qt-Forum gesucht und nix Brauchbares gefunden.
QFile file("file.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file); // read the data serialized from the file
QString str;
qint32 a;
in >> str >> a;
Verfasst: 26. November 2006 09:06
von upsala
Du sprichts von float verwendest aber qint32 und QString. Wie soll das funktionieren?
Verfasst: 26. November 2006 13:49
von moechild
Ich habe dieses Beispiel von der Qt-Dokumentation im Bereich QDataStream gefunden.
Nun will ich wissen wie ich von der Variablen "in" die raus bekomme.
Ich könnte ja auch statt einem QString eine float-Variable benutzen, aber das bringt mich nicht weiter. Ich habe ja mehrere Zahlen in "in" gespeichert-> wie soll ich die rausbekommen?
z.B. float x;
in >> x;
Kenn mich mit binären Daten leider nicht aus.
Verfasst: 26. November 2006 13:58
von Der Neue
Falls du die Anzahl der gespeicherten floats weißt ist das ganz simpel:
Code: Alles auswählen
QFile file("file.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file); // read the data serialized from the file
QList<float> floatList;
float recentFloat;
for (int i = 0; i < Anzahl; i++)
{
in >> recentFloat;
floatList.append(recentFloat);
}
Falls die gespeicherte Datei manipuliert werden könnte, müsste man noch mit den entsprechenden QDataStream-Funktionen auf Gültigkeit prüfen. Hoffe das hilft dir.
Verfasst: 26. November 2006 14:49
von moechild
Danke, das werde ich mal ausprobieren.
Werde dann sagen ob es geklappt hat.
Verfasst: 28. November 2006 21:06
von moechild
Habe nicht den Lösungsvorschlag von oben genommen, sondern einen anderen.
Trotzdem danke, der Vorschlag hat mir geholfen das zu verstehen.
Hab einfach einen char-Zeiger mit der Feldgröße des Files hergenommen, der auf das 1.Feld der Zahlreihen des Files zeigt.
|Feld 1|Feld 2|Feld..|Feld...|....|...|..|..|...|..|.. u.s.w.
//File
QFile file;
//zeiger zeigt auf Feld 1
char *zeiger;
//Parameter 1: feldgröße = filegröße | Parameter 2: Größe des Datentyps
zeiger = (char *)alloc(file.size, sizeof(char));
//an 100. Stelle der variablen zeiger liegt die kaninchenanzahl
float kaninchenanzahl = (float)zeiger[100]
