char in long



  • Hallo Forum,
    ich brauche mal wieder eure Hilfe! Ich habe eine Binärdatei, in die Werte vom Typ "long" eingetragen werden. Nun möchte ich die einzelnen Datensätze durch ein spezielles Kennzeichen trennen (irgendein Steuerzeichen). Im Moment verwende ich einfach einen long mit dem Wert -1000 als Trennzeichen.
    Kann ich ein CarriageReturn zum long casten, so dass ich es auch wieder als long auslesen kann aus der Datei?

    Liebe Grüße,
    Meike



  • In einer Binärdatei ist ein CR einfach nur eine beliebige Bit-Kombination ohne besondere Bedeutung. Und wie ich das verstehe, packst du einfach je 'sizeof(long)' Bytes deiner Datei in einen long-Wert, richtig? Da bleiben dir theoretisch nur zwei Möglichkeiten, die Datensätze voneinander zu trennen:

    • du setzt einen spezieller Wert als Trennmarke hinter jeden Satz (und benötigst noch eine Sonderbehandlung für den Fall, daß dieser Wert real in deinen Daten vorkommen könnte
    • du schreibst vor dem ersten Eintrag noch zusätzlich, wie groß (wahlweise Größe in Bytes oder Anzahl der long-Werte) der aktuelle Datensatz wird.


  • find ne lösung mit "paketheadern" sauberer, als sich nen spezielles trennzeichen auszudenken. und als header selbst würd ich auch einfach einen long nehmen und zwar mit der anzahl der nachfolgenden long werte. erspart rumhantieren mit verschiedenen blockgrößen.


Anmelden zum Antworten