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 :

Sélectionner un octet dans un mot de 2 octets


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Par défaut Sélectionner un octet dans un mot de 2 octets
    Bonsoir !

    J'ai une requête pas trop difficile pour vous, vétérans du C ^^

    J'ai ceci :
    #define VERIF 0x1000

    switch(fpjzpj)
    {
    case VERIF: blablabla;break;
    }

    En fait VERIF contient 2 octets, mais j'aimerais tester que le premier octet. Comment faire pour écrire "case 10xx" ?Comment sélectionner seulement l'octet de poids fort ?

    Merci

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    On peut faire ça avec un masque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #define FIRST_BYTE_MASK 0xFF00
    #define VERIF 0x1000
     
    /* ici, on utilise le "ET" binaire*/
    switch(variable &  FIRST_BYTE_MASK )
    {
    case VERIF: 
        action();
        break;
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Par défaut
    Merci

  4. #4
    Membre confirmé Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Par défaut
    sinon une autre méthode : tu fais variable = variable >> 3

  5. #5
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par crashtib Voir le message
    sinon une autre méthode : tu fais variable = variable >> 3
    Es-tu sûr de toi ?

  6. #6
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par crashtib Voir le message
    sinon une autre méthode : tu fais variable = variable >> 3
    Cette méthode n'est pas pratique :
    En effet, si >> 8 permet de tester les 8 bits de poids fort d'un élément de 16 bits, l'inverse (<< 8) ne permet pas de la faire, dans ce cas il faut passer par une autre méthode.

    De plus, écrire >>= 2 en lieu et place de /= 4 ne réduit pas le temps d'exécution, ça complique juste le code.

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

Discussions similaires

  1. Comment sélectionner une ligne dans une TStringGrid ?
    Par Ben_Le_Cool dans le forum Composants VCL
    Réponses: 11
    Dernier message: 22/08/2005, 12h38
  2. [analyse fichier tga]26 octets dans la nature
    Par bakonu dans le forum Général Java
    Réponses: 5
    Dernier message: 08/07/2005, 10h40
  3. [DB2] Sélectionner une ligne dans une SP
    Par Fatah93 dans le forum DB2
    Réponses: 4
    Dernier message: 25/05/2005, 14h52
  4. Sélectionner une ligne dans une DBGrid
    Par RBIK dans le forum Bases de données
    Réponses: 13
    Dernier message: 01/07/2004, 17h13
  5. [Kylix] stockage d'un tableau d'octets dans interbase
    Par georges1001 dans le forum EDI
    Réponses: 1
    Dernier message: 16/09/2003, 14h14

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