Guest User

Untitled

a guest
May 21st, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. struct x
  4. {
  5. unsigned char a;
  6. unsigned char b;
  7. int c;
  8. unsigned char d;
  9. } __attribute__((packed));
  10.  
  11. // mit "__attribute__((packed))" wird garantiert,
  12. // dass die gesamte struktur am stück im speicher plaziert wird
  13.  
  14. int main( void )
  15. {
  16. // struct erstellen
  17. struct x a;
  18. // variablen der struct zuweisen
  19. a.a = 'A';
  20. a.b = 'B';
  21. a.c = 123;
  22. a.d = 'C';
  23.  
  24. // casten der struktur auf ein char*
  25. // somit können wir char/byte - weise durch den inhalt
  26. // des speichers steppen
  27. char *b = (char *)&a;
  28.  
  29. // für debug zwecke die größe eines ints ausgeben
  30. printf("sizeof(int) == %ld\n", sizeof(int));
  31. // AUSGABE: sizeof(int) == 4
  32. // somit hat ein int auf meinem system 4 byte
  33.  
  34. int i=0;
  35.  
  36. printf("inhalt der struktur als hex\n");
  37.  
  38. // durch den inhalt der struct laufen
  39. // und jedes byte als hex wert ausgeben
  40. // der inhalt von b[i] ist bereits ein char
  41. for(i=0;i<sizeof(a);i++)
  42. {
  43. printf("%02x ", b[i]);
  44. }
  45.  
  46. printf("\n");
  47.  
  48. return 0;
  49. }
  50.  
  51. // AUSGABE DES KOMPLETTEN PROGRAMMS:
  52. // sizeof(int) == 4
  53. // inhalt der struktur als hex
  54. // 41 42 7b 00 00 00 43
  55.  
  56. // ERKLÄRUNG:
  57. // hex dez ASCII
  58. // 41 65 'A'
  59. // 42 66 'B'
  60.  
  61. // diese 4 bytes sind die int in der struct
  62. // 7b 123 '{'
  63. // 00 0 NUL
  64. // 00 0 NUL
  65. // 00 0 NUL
  66.  
  67. // 43 67 'C'
Add Comment
Please, Sign In to add comment