Bonjour,
Admettons que j'ai un tableau de 4 unsigned chars définit de la façon suivante:J'aimerai maintenant avec les 27 premiers bits à partir de l'adresse de toto affecter une variable int. Pour cela je définit un champ de bits:
Code : Sélectionner tout - Visualiser dans une fenêtre à part char toto[4] = {0xFE, 0xDC, 0xBA, 0x98};
Essayons ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 typedef struct { unsigned int entier: 27; } Entier27;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Entier27 e27; e27.entier = *toto; printf ("%d\n", e27.entier);Ça sent le gaz, mais vérifions le résultat:Envoyé par Resultat
0xFEDCBA98 = 0b1111 1110 1101 1100 1011 1010 1001 1000
0d134217726 = 0b111 1111 1111 1111 1111 1111 1110
Comme je m'y attendais je ne tombe pas sur le bon résultat.Bien sûr je pourrais arriver à faire ce que je veux en utilisant des décalages et des masques mais c'est trop compliqué pour pas grand chose.
Quelqu'un a une idée ?
Merci![]()
Partager