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
12
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
12
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
12
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