1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| #include <string.h>
#include <stdio.h>
typedef struct
{
char bit0:1;
char bit1:1;
char bit2:1;
char bit3:1;
char bit4:1;
char bit5:1;
char bit6:1;
char bit7:1;
} Pixel;
int main()
{
Pixel px[4];
int i = 0;
/* On met différentes valeurs dans chaque pixel, la flemme de faire long */
*(char*)(void*)(px) = 'h';
*((char*)(void*)(px)+1) = 'e';
*((char*)(void*)(px)+2) = 'l';
*((char*)(void*)(px)+3) = 'l';
for (i = 0; i < 4; i++)
{
printf("Pixel %d:\n", i);
printf("\t%d\n", px[i].bit0);
printf("\t%d\n", px[i].bit1);
printf("\t%d\n", px[i].bit2);
printf("\t%d\n", px[i].bit3);
printf("\t%d\n", px[i].bit4);
printf("\t%d\n", px[i].bit5);
printf("\t%d\n", px[i].bit6);
printf("\t%d\n", px[i].bit7);
}
/* On met dans un tableau char */
char ch_px[4];
memcpy(ch_px, px, 4); /* strncpy(ch_px, (char*)(void*)(px), 4) */
puts("==================================");
puts("==================================");
/* affiche hell */
printf("Chaine de char: %c%c%c%c\n", ch_px[0], ch_px[1], ch_px[2], ch_px[3]);
/* On remet ça dans un tableau de Pixels */
Pixel px_2[4];
memcpy(px_2, ch_px, 4); /* strncpy((char*)(void*)(px_2), ch_px, 4) */
puts("==================================");
puts("==================================");
for (i = 0; i < 4; i++)
{
printf("Pixel %d:\n", i);
printf("\t%d\n", px_2[i].bit0);
printf("\t%d\n", px_2[i].bit1);
printf("\t%d\n", px_2[i].bit2);
printf("\t%d\n", px_2[i].bit3);
printf("\t%d\n", px_2[i].bit4);
printf("\t%d\n", px_2[i].bit5);
printf("\t%d\n", px_2[i].bit6);
printf("\t%d\n", px_2[i].bit7);
}
return 0;
} |
Partager