Char belegt plötzlich 2 Byte



  • Hallo.
    Bin grad dabei mir C++ selbst zu erschließen, habe mir auch brav den Büchertipp "C++ Lernen und professionell anwenden" erworben.
    Ich versuche im Moment einen 2 dimensionalen Vektor mit je 3 Integerwerten(RGB) in eine BMP Datei zu speichern.
    Nutze für das Speichern nur die Lib <fstream> ... bzw. ofstream. Habe mir also in den letzten Tagen das BMP Format nochmal selbst erschlossen (ist ja eigentlich recht simpel aufgebaut).
    Problem bei mir ist nun, dass wenn ich die RGB(int 0-255) Werte in Char umwandle, nehmen einige Zahlenwerte wie z.B. 10 plötzlich 2 Byte ein, wodurch sich die Bilddaten danach immer weiter schieben.
    Dadurch wirkt das Bild als wenn es nach oben hin immer mehr nach rechts geht.
    Außerdem da die 3 Bildaten sich verschieben, werden auch noch die Farben unschön verändert.

    hier wird ein Farbwert in die Datei geschrieben:

    ha = (char)pic.pixels[e][i].getbi(); //int getbi()
    outfile << ha;
    

    Wenn der Wert dann z.B. 10 ist, kommt 0D0AH(oder 0A0DH) anstatt 0AH raus.
    Die Farbwerte sind außerdem wirklich nur im Bereich von 0 bis 255.

    das Format ist 1024*1024...also bitte nichts mir unterstellen 😉

    hier noch ein Bild zur allgemeinen Belustigung ^^
    http://i11.tinypic.com/4dwk7xx.jpg

    PS: noch ne andere Frage...kann mir jemand ein gutes Prog empfehlen womit man sich die ganzen Hexwerte sowie Bitmuster anschauen und editieren kann?
    Ich nehm zur zeit "Hexprobe", was erstens blos ne Demo ist und zweitens blöd 😛



  • hast du die datei im binär-modus geöffnet?



  • Oh verdammt...Ich dachte das hätte ich auch ausprobiert.
    Dankeschön!


Anmelden zum Antworten