Hallo zusammen
Ich möchte den Dateiheader eines Bitmaps in ein Strukt laden.
Dazu habe ich folgendes strukt definiert:
1 | struct bmp_file_header
|
2 | {
|
3 | unsigned char bfType[2];
|
4 | unsigned long bfSize;
|
5 | unsigned long bfReserverd;
|
6 | unsigned char bfOffset[4];
|
7 | };
|
system ist STM32 und ARM-GCC mit CooCox IDE
Wenn ich das ganze wie im obigen Beispiel definiere, sieht mein bfOffset
so aus:
bfOffset 0x200001e4
bfOffset[0] 0
bfOffset[1] 0
bfOffset[2] '8'
bfOffset[3] 0
Dies ist aber Falsch!
Die '8' müsste bei bfOffset[0] liegen
Wenn ich das Strukt wie folgt definiere:
1 | struct bmp_file_header
|
2 | {
|
3 | unsigned char bfType[2];
|
4 | unsigned char bfSize[4];
|
5 | unsigned char bfReserverd[4];
|
6 | unsigned char bfOffset[4];
|
7 | };
|
Dann sieht das ganze so aus:
bfOffset 0x200001e2
bfOffset[0] 'F'
bfOffset[1] 0
bfOffset[2] 0
bfOffset[3] 0
Und genau so sehen auch die Rohdaten des BMPs aus!
Das wäre also korrekt!
Daten werden wie folgt geladen:
1 | bmp_f_hdr = (struct bmp_file_header *)&ucBuffer[0];
|
Ich dachte unsigned long ist genau 4bytes lang...
Was läuft hier schief?