Binäredateien



  • Hallo, ich habe ein Programm welches ein paar Einstellungen bei Programmstart aus einer normalen Textdatei liest. Jetzt würde ich gerne diese Textdatei lieber in binärer Form haben. So das nicht jeder gleich so einfach drauf zugrifen kann. Wie gehe ich da am besten vor? Wie kann ich diese Textdatei in die binäre Form bringen?



  • denke, das dritte beispiel von hume sikkins ist dein freund
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39469.html



  • Hmmm, muss ich mir mal genau durchlesen.

    Weil die Textdatei sieht (noch) in etwas so aus. Und soll ja binär gespeichert werden.

    object
      name  = "name_vom_Objekt"
      status= aktive
      usw...
    end
    

    Diese kann ich einfach Zeile für Zeile einlesen und in seine Einzelteile teilen.

    Ich bräuchte halt eine Möglichkeit das ganze, ohne alle Parserfunktione umschreiben zu müssen, als String reinzubekommen.

    Ich nehme mal an das es im binär keine Zeilenumbrüche oder sowas gibt. Also das ganze als eine lange folge von 0 und 1 aneinanderhängt. Das macht das ganze schon komplizierter. Für Ideen und Vorschläge bin ich dankbar.



  • Ich bräuchte halt eine Möglichkeit das ganze, ohne alle Parserfunktione umschreiben zu müssen, als String reinzubekommen.

    Der Sinn von binären Dateien ist es doch eben nicht, die Daten als String zu haben.

    Ein Boolean verbraucht 1 Byte in einer Binärdatei, aber als Text "false"/"true" eben 5 oder 4 Bytes. Die Zahl 5.34343242345565 verbraucht in einer Binärdatei 4 Byte (wenn die Fließkommazahlen 32bit sind), in Text 16 Bytes.

    In C++ gibt es die IO-Stream-Klassen:

    // Pseudocode
    istream s = new istream()
    s >> zahl;
    s >> boolWert;
    
    ostream s = new ostream()
    s << zahl;
    s << boolWert;
    

    Das macht das ganze schon komplizierter

    Nein, es macht die Sache einfacher, weil du die Textdatei nicht parsen musst.



  • Hmmm, was ist z.B. mit der Bezeichnung "object". Auch in einer Binärdatei( wobei alle Dateien binär sind 🙂 ). Musst doch auch diese später im Programm erkennbar sein. Also ein Byte für jeden Buchstaben. Das sind wieder 6 Byte. Oder nicht.


Log in to reply