bastionmancher
Mitglied
Hallo,
ich versuche ein Programm zu schreiben, dass den Header einer Bitmapdatei einliest und hexadezimal ausgibt. Das Programm soll also von Offset 0 bis ausschließlich Offset 54 bzw. hexadezimal 32 lesen.
Bis jetzt hab ich mir folgendes überlegt:
Wenn ich versuche das zeichen direkt als char auszugeben passiert gar nix. Wenn ich es wie hier erst in einen integer umwandele, kommt zwar eine Ausgabe, allerdings keine sinnvolle^^: Bei einer Testdatei wird unendlich oft 7c angezeigt...
Ich hab mir die Datei mal mit einem Hexadezimaleditor angeguckt. Die richtige Ausgabe müsste lauten:
eingebaut, obwohl ich denke, dass sie eigentlich überflüssig sein müsste...
Ich hoffe ihr könnt mir helfen. Danke schon mal im Voraus für alle Versuche!
Gruß
bastionmancher
ich versuche ein Programm zu schreiben, dass den Header einer Bitmapdatei einliest und hexadezimal ausgibt. Das Programm soll also von Offset 0 bis ausschließlich Offset 54 bzw. hexadezimal 32 lesen.
Bis jetzt hab ich mir folgendes überlegt:
Code:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
cout<<"Bitte geben Sie den Dateinamen einer 24-bit Bitmap Datei an (max. 15 Zeichen): "<<flush;
char name[15];
cin>>name;
system("cls");
ifstream einlesen;
einlesen.setf(ios::hex, ios::basefield);
einlesen.open(name, ios::in);
string text;
char zeichen;
int zahl;
while(einlesen.tellg()<54)
{
einlesen.get(zeichen);
zahl=zeichen;
cout.setf(ios::hex, ios::basefield);
cout<<zahl<<flush;
einlesen.seekg(1, ios::cur);
}
system("pause");
return 0;
}
Ich hab mir die Datei mal mit einem Hexadezimaleditor angeguckt. Die richtige Ausgabe müsste lauten:
Ich dachte dann, dass get() wohl den einlesepunkt, weshalb auch immer, nicht verschiebt. Deshalb hab ich noch die zeile424D 38A9 E600 0000 0000 3600 0000 2800 0000 200A 0000 9807 0000 0100 1800 0000 0000 02A9 E600 202E 0000 202E 0000 0000 0000 0000 0000
Code:
einlesen.seekg(1, ios::cur);
Ich hoffe ihr könnt mir helfen. Danke schon mal im Voraus für alle Versuche!
Gruß
bastionmancher