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

Bibliothèque standard C Discussion :

codage bit a bit


Sujet :

Bibliothèque standard C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Par défaut codage bit a bit
    Bonjour,

    voila, je dois récupérer des data (u8) depuis une fonction et remplir une autre data avec.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    u8 madata[6]; /* 48 bits */
    u8 funct(u8 id);
    mes datas (u8) sont en fait codés sur 3 bits (3*16 datas, soit 48 bits).

    Comment faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    i=0;
    for (id=0;i<16;id++)
    {
      madata[i] = funct(id) << 3 ???
      madata[i] = funct(id++) << 6 ???
      et après ???
      i++;
    }
    merci de votre aide

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Si ton compilateur le supporte, utilise le type "long long". Cela fait des nombres sur 8 octets donc 64 bits et comme cela, tes 48 bits rentrent dedans sans effort.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre confirmé Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Par défaut
    merci de ta réponse mais je n'ai pas le choix, je n'ai droit qu'aux u8, u16 et u32 ...

  4. #4
    Membre émérite
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 511
    Par défaut
    Bonjour Joccy

    J'ai un peu de mal à comprendre ce que tu souhaite faire. mais voici peut être une solution à ton problème

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    #include<stdio.h>
     
    typedef unsigned char u8;
     
    typedef struct 
    {
       unsigned int val0 : 3;   
       unsigned int val1 : 3;
       unsigned int val2 : 3;
       unsigned int val3 : 3;
       unsigned int val4 : 3;
       unsigned int val5 : 3;
       unsigned int val6 : 3;
       unsigned int val7 : 3;
       unsigned int val8 : 3;
       unsigned int val9 : 3;
       unsigned int val10 : 3;
       unsigned int val11 : 3;
       unsigned int val12 : 3;
       unsigned int val13 : 3;
       unsigned int val14 : 3;
       unsigned int val15 : 3;
    } bitField;
     
    typedef union
    {
       bitField accesBit;
       u8       accessByte[6];
    } madataType;
     
     
    u8 func(u8 id) 
    {
       return (id%8);
    }
     
    void main()
    {
       madataType madata;
     
       madata.accesBit.val0 = func(0);
       madata.accesBit.val1 = func(1);
       madata.accesBit.val2 = func(2);
       madata.accesBit.val3 = func(3);
       madata.accesBit.val4 = func(4);
       madata.accesBit.val5 = func(5);
       madata.accesBit.val6 = func(6);
       madata.accesBit.val7 = func(7);
       madata.accesBit.val8 = func(8);
       madata.accesBit.val9 = func(9);
       madata.accesBit.val10 = func(10);
       madata.accesBit.val11 = func(11);
       madata.accesBit.val12 = func(12);
       madata.accesBit.val13 = func(13);
       madata.accesBit.val14 = func(14);
       madata.accesBit.val15 = func(15);
    }
    Cette solution a un gros désaventage, c'est que cela n'est pas portable. A toi de voir si cela peut solutionner ton problème

    Cordialement
    Page sur Developpez : http://pbriand.developpez.com

  5. #5
    Membre confirmé Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Par défaut
    Merci beaucoup.
    Tant pis si ce n'est pas portable, pour l'instant cela n'a pas d'importance.
    Je vais tester ca.

    PS: en fait je récupére des datas (u8) que je dois envoyer sous forme de messages de traces et on m'oblige a les mettre sous 3 bits ... pour gagner du temps.

  6. #6
    Membre confirmé Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Par défaut
    et puis je faire:

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. bits,bytes,bit word ?
    Par Battosaiii dans le forum C
    Réponses: 2
    Dernier message: 17/03/2006, 11h29
  2. Comment lire un char bit a bit ?
    Par damien99 dans le forum C++
    Réponses: 9
    Dernier message: 02/02/2006, 21h57
  3. Lire bit par bit
    Par The_Undertaker dans le forum C++
    Réponses: 8
    Dernier message: 01/07/2005, 11h43
  4. Conversion de handles 16 bits <--> 32 bits
    Par Alcatîz dans le forum Windows
    Réponses: 6
    Dernier message: 13/12/2003, 13h40
  5. Désassemblage à la main 16 bits / 32 bits
    Par le mage tophinus dans le forum Assembleur
    Réponses: 12
    Dernier message: 19/04/2003, 00h55

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