J'ai la solution...
en fait, tu voudrais faire un truc du genre :
int a = 0b11010101;
qui pourrai s'écrire aussi :
int a = 0xD5;
ou
int a = 213;
mais bon ! apparement, tu tiens à utiliser le format binaire.
voici donc 3 macro pour transformer des chaines binaires (respectivemnt 8, 16 et 32 bits).
#define to8b( o ) ( (((#o[7] == 0x30) ? 0 : 1) << 0) | \
(((#o[6] == 0x30) ? 0 : 1) << 1) | \
(((#o[5] == 0x30) ? 0 : 1) << 2) | \
(((#o[4] == 0x30) ? 0 : 1) << 3) | \
(((#o[3] == 0x30) ? 0 : 1) << 4) | \
(((#o[2] == 0x30) ? 0 : 1) << 5) | \
(((#o[1] == 0x30) ? 0 : 1) << 6) | \
(((#o[0] == 0x30) ? 0 : 1) << 7) )
#define to16b( o )( (((#o[15] == 0x30) ? 0 : 1) << 0) | \
(((#o[14] == 0x30) ? 0 : 1) << 1) | \
(((#o[13] == 0x30) ? 0 : 1) << 2) | \
(((#o[12] == 0x30) ? 0 : 1) << 3) | \
(((#o[11] == 0x30) ? 0 : 1) << 4) | \
(((#o[10] == 0x30) ? 0 : 1) << 5) | \
(((#o[ 9] == 0x30) ? 0 : 1) << 6) | \
(((#o[ 8] == 0x30) ? 0 : 1) << 7) | \
(((#o[ 7] == 0x30) ? 0 : 1) << 8) | \
(((#o[ 6] == 0x30) ? 0 : 1) << 9) | \
(((#o[ 5] == 0x30) ? 0 : 1) << 10) | \
(((#o[ 4] == 0x30) ? 0 : 1) << 11) | \
(((#o[ 3] == 0x30) ? 0 : 1) << 12) | \
(((#o[ 2] == 0x30) ? 0 : 1) << 13) | \
(((#o[ 1] == 0x30) ? 0 : 1) << 14) | \
(((#o[ 0] == 0x30) ? 0 : 1) << 15) )
#define to32b( o )( (((#o[31] == 0x30) ? 0 : 1) << 0) | \
(((#o[30] == 0x30) ? 0 : 1) << 1) | \
(((#o[29] == 0x30) ? 0 : 1) << 2) | \
(((#o[28] == 0x30) ? 0 : 1) << 3) | \
(((#o[27] == 0x30) ? 0 : 1) << 4) | \
(((#o[26] == 0x30) ? 0 : 1) << 5) | \
(((#o[25] == 0x30) ? 0 : 1) << 6) | \
(((#o[24] == 0x30) ? 0 : 1) << 7) | \
(((#o[23] == 0x30) ? 0 : 1) << 8) | \
(((#o[22] == 0x30) ? 0 : 1) << 9) | \
(((#o[21] == 0x30) ? 0 : 1) << 10) | \
(((#o[20] == 0x30) ? 0 : 1) << 11) | \
(((#o[19] == 0x30) ? 0 : 1) << 12) | \
(((#o[18] == 0x30) ? 0 : 1) << 13) | \
(((#o[17] == 0x30) ? 0 : 1) << 14) | \
(((#o[16] == 0x30) ? 0 : 1) << 15) | \
(((#o[15] == 0x30) ? 0 : 1) << 16) | \
(((#o[14] == 0x30) ? 0 : 1) << 17) | \
(((#o[13] == 0x30) ? 0 : 1) << 18) | \
(((#o[12] == 0x30) ? 0 : 1) << 19) | \
(((#o[11] == 0x30) ? 0 : 1) << 20) | \
(((#o[10] == 0x30) ? 0 : 1) << 21) | \
(((#o[ 9] == 0x30) ? 0 : 1) << 22) | \
(((#o[ 8] == 0x30) ? 0 : 1) << 23) | \
(((#o[ 7] == 0x30) ? 0 : 1) << 24) | \
(((#o[ 6] == 0x30) ? 0 : 1) << 25) | \
(((#o[ 5] == 0x30) ? 0 : 1) << 26) | \
(((#o[ 4] == 0x30) ? 0 : 1) << 27) | \
(((#o[ 3] == 0x30) ? 0 : 1) << 28) | \
(((#o[ 2] == 0x30) ? 0 : 1) << 29) | \
(((#o[ 1] == 0x30) ? 0 : 1) << 30) | \
(((#o[ 0] == 0x30) ? 0 : 1) << 31) )
avec ça, tu peux maintenant écrire :
int a = to8b(11010101);
et si tu fais
printf("a = %d", a);
tu obtiendras à l'affichage a = 213
Enjoy !