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;
Binäre Daten lesen
-
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.
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.
Falls du die Anzahl der gespeicherten floats weißt ist das ganz simpel:
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.
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);
}Gesegnet sein all die, die nichts zu sagen haben
und trotzdem den Mund halten.
und trotzdem den Mund halten.
-
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]

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]