Binäre Daten lesen

Alles rund um die Programmierung mit Qt
Antworten
moechild

Binäre Daten lesen

Beitrag 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;
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du sprichts von float verwendest aber qint32 und QString. Wie soll das funktionieren?
moechild

Beitrag 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.
Der Neue
Beiträge: 24
Registriert: 31. Mai 2006 14:45

Beitrag 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.
Gesegnet sein all die, die nichts zu sagen haben
und trotzdem den Mund halten.
moechild

Beitrag von moechild »

Danke, das werde ich mal ausprobieren.

Werde dann sagen ob es geklappt hat.
moechild

Beitrag 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]


:lol:
Antworten