IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

champs de bits


Sujet :

C++/CLI

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 200
    Par défaut champs de bits
    Bonjour,

    Est-il possible de définir des champs de bits en C++ managé et d'utliser un équivalant de memcpy pour faire un cast ?

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    typedef struct output
    {
       unsigned char val1:2 ;
       unsigned char val2:3 ;
       unsigned char val3:5 ;    // Définition d'une structure de champs de bits
       unsigned char val4:3 ;
       unsigned char val5:1 ;
       unsigned char val6:2 ;
    } _sortie ;
     
    char entree[2]={0x23,0x11} ;  // Déclaration de données d'entrée
     
    _sortie MaSortie ;   // Déclaration d'une vatiable de type de ma structure
     
    memcpy(&MaSortie,entree,sizeof(MaSortie) ;  // Stockage des données d'entrée sous la forme d'une structure
     
    unsigned char monInfo ;
    monInfo=MaSortie.val3 ;  // Récupération d'une information
    Merci pour votre aide

    Nicolas
    Strasbourg

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    regarde du coté de System.Collections.Specialized.BitVector32
    mais à mon avis, un champ de bit n'a pas toujours grand interet, surtout si la structure du compilo change

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 200
    Par défaut
    Citation Envoyé par nico-pyright(c)
    Mais à mon avis, un champ de bit n'a pas toujours grand interet, surtout si la structure du compilo change
    Pas compris ce que tu veux dire.
    Tu ne trouves pas que c'est super pratique le "memcpy" dans un programme comme si dessus ?

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    ben je sais pas ce que tu veux faire, mais quelque chose dépendant de l'alignement n'est pas du tout évolutif ... c'est surtout en ce sens que je trouve que c'est pas bien

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 200
    Par défaut
    Citation Envoyé par nico-pyright(c)
    ben je sais pas ce que tu veux faire
    C'est du réseau.
    Je reçois des trames réseaux sous la forme d'un tableau de caractaires.
    En fonction de l'en-tête de la trame réseau (qui identifie le service), je traite les données de différentes manières :

    exemple : données sur 16 bits

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    --------- 16 bits : |0|1|0|1|0|0|1|0|0|1|1|0|0|1|0|1|  
    -------- 2 octets : |0 1 0 1 0 0 1 0|0 1 1 0 0 1 0 1|
    ----------- 1 int : |0 1 0 1 0 0 1 0 0 1 1 0 0 1 0 1|
    1 structure perso : |0 1 0|1 0 0|1|0 0 1 1 0|0 1 0 1|
    En castant, je concidère mes données de différentes manières

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    ok.

    tu as pu trouver ton bonheur avec BitVector32 ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 200
    Par défaut
    Ca me parait pas mal, mais je bosse sur des trames de 64 bits

    Je vais regader de ce côté là, et du côté de BitArray.

    Merci

Discussions similaires

  1. champ de bits adressés sur port
    Par pouypouy47 dans le forum C
    Réponses: 2
    Dernier message: 14/08/2007, 17h44
  2. Champs de bits de taille dynamique
    Par Chop_chop dans le forum C++
    Réponses: 5
    Dernier message: 13/07/2007, 15h16
  3. enum et champs de bits
    Par FamiDoo dans le forum C++
    Réponses: 12
    Dernier message: 12/07/2006, 13h22
  4. Champs de bit et affectation
    Par the_ionic dans le forum C
    Réponses: 11
    Dernier message: 09/06/2006, 16h13
  5. lire un champ de bit a partir d'un fichier
    Par loupdeau dans le forum MFC
    Réponses: 5
    Dernier message: 09/08/2005, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo