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
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 82
    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 confirmé
    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
    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
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 82
    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 confirmé
    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
    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