Speicherung von floats
-
Hallo,
ich möchte ein kleines Binäres Dateiformat erstellen. Darin möchte ich floats speichern. Da mein Programm auch auf unterschiedlichen Plattformen laufen soll, stellt sich mir folgende Frage; Reicht es aus, die 4Byte des floats in die Datei zu schreiben und bei Bedarf (z.B. wenn ein Programm auf einer BigEndian Maschine versucht, die Datei zu öffnen) die Bytereihenfolge umzudrehen, oder werden floats auf verschiedenen Plattformen unterschiedlich gespeichert.
-
Das Format ist nicht garantiert.
-
TactX schrieb:
Das Format ist nicht garantiert.
Das ist dumm und hab ich mir fast gedacht...
Ich könnte natürlich die floats in ASCII speichern, das wäre allerdings nicht sehr optimal. Kennt jemand ein Tutorial, wie man floats binär speichert und wieder ausliest?
-
Das Format ist in IEEE-754 sehr genau festgelegt. Es ist zwar im Sprachstandard nirgends gesagt, dass float und double in C auf die IEEE-Datentypen abgebildet werden müssen, aber es ist wohl bei allen vernünftigen Compilern so (außer für Embedded-Systeme vielleicht). Ich würde es also durchaus binär abspeichern. Selbst auf Systemen, wo es nicht nativ unterstützt wird, gibt's wohl Bibliotheken, die das Lesen und Schreiben von IEEE-754-Zahlen erlauben.
-
-
Dann geh ich mal davon aus, dass die meisten Compiler IEEE-754 benutzten und beschränke meine Plattformunabhängigkeit auf die Endian-Umwandlung.
Ich werd dann wohl am Anfang des Formats einen festen IEEE-754 Wert (z.B. 123.456) schreiben, damit das Programm in der Lage ist, festzustellen, ob das Format gelesen werden kann.
Danke, für eure Antworten!