std::ios::hex



  • Hi, hab mal wieder eine meiner doofen Fragen.
    Ich habe letztens in einem Code gesehen, dass jemand je nach eingabe einen std::ofstream entweder ohne flags, mit std::ios::binary, oder mit std::ios::hex.
    Ich hab die Unterteilung schon merkwürdig gefunden(er hatte generell ein merkwürdiges Verständniss von Streams) und in diesem Kontext war sie sicher unlogisch.
    Jetzt meine Frage.
    Bringt es überhaupt etwas fstreams mit std::ios::hex oder oct zu öffnen, oder ist es völliger Unfug. Letzten Endes werden ja doch nur Bytes reingeschrieben
    Und: Als ich es ausprobiert habe hat er mit std::ios::hex die Datei gar nicht erst geöffnet, kann man das also überhaupt tun?



  • Also meinen Informationen zufolge kann man einem fstream beim Oeffnen neben dem Dateinamen nur einen ios_base::openmode uebergeben, und ios_base::hex gehoert nicht dazu. hex ist vielmehr ein Formatflag das nach dem oeffnen des Strings gesetzt werden muss.
    - Wenn ein stream mit ios_base::binary geoeffnet wird, dann werden Zahlen in ihrer binaeren Darstellung gespeichert und ausgelesen. Dann haben hex, oct und dec keinen Einfluss.
    - wird der stream nicht mit binary geoeffnet, dann entscheiden hex, oct und dec ueber die Darstellung der Zahlen.

    (Die Infos hab ich auch nur aus ner Referenz, wenn ich da was falsch mitbekommen hab moege man mich berichtigen)



  • AFAIK ist ios::binary nur dazu da, dass die kontrollzeichen die im binärcode zufällig vorkommen nicht ausgewertet werden, also leerzeichen, /0 usw. mit der ausgabe der zahlen hat es eigentlich nichts zu tun.


Anmelden zum Antworten