Hexadezimal in Datei schreiben



  • Hallo
    Ich versuche gerade eine .bmp Datei einzulesen in einen Vektor zu speichern und wieder in eine Datei zu schreiben. Später sollen zwischen dem Einlesen und Abspeichern irgendwelche Veränderungen durchgeführt werden aber erstmal geht es mir um das speichern der Daten 1:1.
    Wenn ich die Daten in ein .txt speichere stehen dort auch die richtigen Werte, versuche ich aber in ein .bmp zu speichern schreibt mir das Programm nicht die hexadezimalen Werte für jedes Byte sondern macht aus den einzelnen Ziffern Zahlen im ASCII-Code.

    fstream savestream;
    savestream.open(speicherpfad, ios::out|ios::binary);
    
    savestream<<pixel[l][s] ;
    

    Kann ich mit einem ofstream jetzt auch irgendwie Byte für Byte die Daten in der Datei "ablegen" so dass dort dann die hexadezimalen Werte stehen?

    Und ja ich weiss, dass es für die Bildverarbeitung gute Bibliotheken gibt, das Programm schreibe ich nur zu Übungszwecken.

    Danke für eure Hilfe
    Gruß Zaus


  • Mod

    Mit unformatierten Ausgabeoperationen statt <<.

    Diese wären put und write, je nach Bedarf.



  • Zaus schrieb:

    fstream savestream;
    savestream.open(speicherpfad, ios::out|ios::binary);
    
    savestream<<pixel[l][s] ;
    

    Kann ich mit einem ofstream jetzt auch irgendwie Byte für Byte die Daten in der Datei "ablegen" so dass dort dann die hexadezimalen Werte stehen?

    Hallo Zaus,

    Du darfst das in ein BMP-File nicht hexadezimal wegschreiben sondern binär. In Deinem Fall ganz einfach:

    savestream << char( pixel[l][s] );
    

    Wichtig: die Datei muss mit Modeflag std::ios_base::binary geöffnet sein.



  • Vielen Dank, funktioniert.


Anmelden zum Antworten