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 Discussion :

Traitement binaire et variables?


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 82
    Points : 36
    Points
    36
    Par défaut Traitement binaire et variables?
    Bonjour à tous,

    je suis en train de travailler sur un projet, ou je dois créer une trame de données.

    j'ai les variables suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    unsigned char Var1; /*(utilise 8bits sur 8)*/
    unsigned char Var2; /*(utilise 6bits sur 8, sa valeur ne dépassera donc pas 63)*/
    unsigned char Var3; /*(utilise 2bits sur 8)*/
    unsigned char Var4; /*(utilise 1bit sur 8)*/
    unsigned int   Var5; /*(utilise 15bits sur 16)*/
    unsigned char Var6; /*(utilise 8bits/8)*/
    Je dois concaténer les bits utiles de ces variables afin d'obtenir une trame de 40 bits...

    j'ai commencé un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char *trame="00000";
     
    trame[0]=0xB6;
    trame[1]=(((unsigned char)(Var2*4)) && 0xFC) || Var3;
    trame[2]=??
    Je bloque après car je ne sais pas découper une variable de 16bits en deux vars de 8bits...

    Un petit coup de main SVP?

    Alex

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Ne pas confondre le ET/OU logique et le ET/OU bit à bit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trame[1]=(((unsigned char)(Var2*4)) & 0xFC) | Var3;
    Je bloque après car je ne sais pas découper une variable de 16bits en deux vars de 8bits...
    Les bits de poids faible par un masque (&), les poids forts par un décalage (>>)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 82
    Points : 36
    Points
    36
    Par défaut
    merci pour votre aide...

    Est ce que passer par une chaine de caractère, c'est une bonne méthode pour générer cette trame ou il y a mieux?

    Alex

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par alexglvr Voir le message
    Est ce que passer par une chaine de caractère, c'est une bonne méthode pour générer cette trame ou il y a mieux?
    Non. Cela ne ferait que compliquer considérablement les choses. Il suffit d'appliquer un masque avec un & pour obtenir le byte de poids faible et de faire des décalages avec l'opérateur >> pour obtenir celui de poids fort.

    La construction de la trame peut se faire avec les opérateurs &, | , << et >> comme pour trame[1]

    A noter que dans trame[1] la multiplication par 4 revient à faire deux décalages à gauche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trame[1] = ( (Var2 << 2 ) & 0xFC) | (Var3 & 0x03);

Discussions similaires

  1. [RegEx] traitement regex de variable de formulaire
    Par serna dans le forum Langage
    Réponses: 2
    Dernier message: 22/04/2013, 16h42
  2. Réponses: 7
    Dernier message: 09/08/2012, 16h45
  3. Réponses: 0
    Dernier message: 24/11/2009, 11h36
  4. [PHP 5.3] Traitement d'une variable $_GET
    Par cassis2k dans le forum Langage
    Réponses: 4
    Dernier message: 15/09/2009, 15h55
  5. Traitement de variables
    Par mirrar dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/08/2005, 09h43

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