Beim Datei auslesen verliert er Daten....



  • Hallo liebes Forum,

    Dies ist mein erster Beitrag also habt Geduld mit mir 🙂 .

    Mein Problem ist, dass ich eine BMP-Datei Hexadecimal auslesen möchte und diese dann (erstmal) in dieser Form ausgeben möchte.
    Mein Code

    ist:
    
    int c;
    FILE *bmpFile;
    
      bmpFile = fopen ( "picture.bmp" , "rb" );
    
        if(bmpFile!=NULL){		
           while((c = getc(bmpFile))!= EOF)
           printf("%X",c);
           fclose (bmpFile);
    

    } // end if
    else
    printf("Error opening file!\n");
    }

    Wenn ich die Datei dann im DOS-Fenster ausgebe, gibt er mir auch soweit den richtigen Hex-Code aus aber wenn Werte gleich Null sind, dann schneidet er genau die Hälfte weg.....hier ein Beispiel zur erläuterung:

    z.B. Orginal Code : FE 23 00 00 00 00 EE DD AA 00 00 12...
    Angezeigter Code : FE 23 00 00 EE DD AA 00 12 ...

    Er schneidet immer die Hälfte der Nullen ab......Warum?! 😮
    Ich brauche den komplett richtigen, hexadezimalan Inhalt des Bildes.
    Mache ich dort schon einen Fehler?

    Ich danke euch schon einmal für eure Hilfe!!!



  • Sollte eigentlich so funktionieren, wie du es machst. Du kannst aber mal fread anschauen.



  • Ich habe mir auch schon fread() angeschauht aber wie gebe ich den Inhalt hexadezimal aus, wenn ich Ihn so auslese:

    fread (buffer,1,lSize,bmpFile);
    

    So sollte doch der gesamte Ihnalt des Bildes im buffer stehen wenn lSize mit

    lSize = ftell (bmpFile);			
          rewind (bmpFile);
    

    ausgelesen wurde....oder?

    Wie speichert (welches Format) er eigentlich den Inhalt des Bildes im buffer?

    Letzte Frage nochmal von meinem ersten Problem...wenn alles oben richtig ist, warum schneidet er die Nullen ab?? Oder ist bei der Ausgabe im DOS-Fenster irgendwas zu beachten.
    😕


Anmelden zum Antworten