Champ de bits [Résolu]

Signaler
Messages postés
18
Date d'inscription
mardi 17 juillet 2001
Statut
Membre
Dernière intervention
31 août 2006
-
Messages postés
18
Date d'inscription
mardi 17 juillet 2001
Statut
Membre
Dernière intervention
31 août 2006
-
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

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Oups, 123 sur 6 bits ca va pas le faire

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
18
Date d'inscription
mardi 17 juillet 2001
Statut
Membre
Dernière intervention
31 août 2006

sur 6 bits oui mais pas sur 16

@+


oba.
Messages postés
18
Date d'inscription
mardi 17 juillet 2001
Statut
Membre
Dernière intervention
31 août 2006

merci

@+


oba.