Champ de bits

Résolu
obasileus Messages postés 18 Date d'inscription mardi 17 juillet 2001 Statut Membre Dernière intervention 31 août 2006 - 31 août 2006 à 18:15
obasileus Messages postés 18 Date d'inscription mardi 17 juillet 2001 Statut Membre Dernière intervention 31 août 2006 - 31 août 2006 à 18:32
Bonjour,

je souhaiterai savoir comment faire pour déclarer un champs de bits et pouvoir ensuite accéder à la structure complète genre :

typedef struct
{
    unsigned short
        champ_1: 6,
        champ_2: 6,
        champ_3: 1,
        champ_4: 1,
        champ_5: 2;
}BIT_FIELD_1;

BIT_FIELD_1 toto;
toto = 123;

sauf que la dernière ligne ne marche pas :-(

merci de votre aide
@+


oba.

5 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
31 août 2006 à 18:28
typedef union
{
  struct
  {
    unsigned short
    champ_1: 6,
    champ_2: 6,
    champ_3: 1,
    champ_4: 1,
    champ_5: 2;
  } st;
  short sh;
}BIT_FIELD_1;

BIT_FIELD_1 bf;
bf.sh = 123;

_____________________________________
Un éditeur de ressources gratuit pour Windows
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
31 août 2006 à 18:18
Ben non, l'intérêt c'est qu'on a accès au bits:
toto.champ_1 = 123; par exemple

Si tu veux écrire 16 bits d'un coup, c'est possible aussi mais faut un peu ruser:

*(short*)toto = 123;

Ou encore utiliser une union

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
31 août 2006 à 18:19
Oups, 123 sur 6 bits ca va pas le faire

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
obasileus Messages postés 18 Date d'inscription mardi 17 juillet 2001 Statut Membre Dernière intervention 31 août 2006
31 août 2006 à 18:22
sur 6 bits oui mais pas sur 16

@+


oba.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
obasileus Messages postés 18 Date d'inscription mardi 17 juillet 2001 Statut Membre Dernière intervention 31 août 2006
31 août 2006 à 18:32
merci

@+


oba.
0
Rejoignez-nous