Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- struct x
- {
- unsigned char a;
- unsigned char b;
- int c;
- unsigned char d;
- } __attribute__((packed));
- // mit "__attribute__((packed))" wird garantiert,
- // dass die gesamte struktur am stück im speicher plaziert wird
- int main( void )
- {
- // struct erstellen
- struct x a;
- // variablen der struct zuweisen
- a.a = 'A';
- a.b = 'B';
- a.c = 123;
- a.d = 'C';
- // casten der struktur auf ein char*
- // somit können wir char/byte - weise durch den inhalt
- // des speichers steppen
- char *b = (char *)&a;
- // für debug zwecke die größe eines ints ausgeben
- printf("sizeof(int) == %ld\n", sizeof(int));
- // AUSGABE: sizeof(int) == 4
- // somit hat ein int auf meinem system 4 byte
- int i=0;
- printf("inhalt der struktur als hex\n");
- // durch den inhalt der struct laufen
- // und jedes byte als hex wert ausgeben
- // der inhalt von b[i] ist bereits ein char
- for(i=0;i<sizeof(a);i++)
- {
- printf("%02x ", b[i]);
- }
- printf("\n");
- return 0;
- }
- // AUSGABE DES KOMPLETTEN PROGRAMMS:
- // sizeof(int) == 4
- // inhalt der struktur als hex
- // 41 42 7b 00 00 00 43
- // ERKLÄRUNG:
- // hex dez ASCII
- // 41 65 'A'
- // 42 66 'B'
- // diese 4 bytes sind die int in der struct
- // 7b 123 '{'
- // 00 0 NUL
- // 00 0 NUL
- // 00 0 NUL
- // 43 67 'C'
Add Comment
Please, Sign In to add comment