Bonjour,

Admettons que j'ai un tableau de 4 unsigned chars définit de la façon suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
char toto[4] = {0xFE, 0xDC, 0xBA, 0x98};
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
1
2
3
4
typedef struct
{
    unsigned int entier: 27;
 } Entier27;
Essayons ceci:
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);
Citation Envoyé par Resultat
134217726
Ça sent le gaz, mais vérifions le résultat:
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