Hallo,
ich versuche gerade einen Dateiheader einzulesen, allerdings klappt das nicht so ganz.
Das ganze sieht vom Prinzip her so aus:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
|
struct header{
unsigned int wert1; // eine Länge
unsigned char wert2[4]; // eine Signatur aus 4 ASCII Zeichen
};
// ---------------------------
ifstream file(path.c_str(), ios::binary);
header h;
file.read(reinterpret_cast<char*>(&h), sizeof(header));
|
So wenn ich mir jetzt mal wert1 bzw. wert2 ausgeben lasse hat wert2 die Signatur die auch in der Datei steht (z.B. abcd). Aber in wert1 steht jetzt nicht die Zahl die ich erwarte, sondern 294840231 oder irgend sowas großes, obwohl in der Datei 00 00 00 09 (hex) = 13 steht (hab ich mit Hex Editor geprüft).
Das ganze funktioniert nur wenn ich wert1 als unsigned char[4] einlese und dann int(wert1[3]) ausgebe.
Ich dachte ich müsste evt. die Bytes vertauschen, bringt aber nichts. Liegt das am casten? Ich hab das noch nicht so oft gemacht und bräuchte da wohl gerade mal einen Tipp