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

SL & STL C++ Discussion :

Afficher un BYTE en hexa avec cout ?


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Par défaut Afficher un BYTE en hexa avec cout ?
    Bonjour,

    Quand j'utilise printf:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("%X\n", byte);
    ça marche. J'obtiens bien le résultat attendu.
    Par contre avec cout ça foire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cout << hex << byte << endl;
    il m'affiche n'importe quoi.

    Quelqu'un pourrait-il me dire pourquoi et comment faire ?

    Merci.

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Je parie que byte est un char.

    Il t'affiche le char et pas n'importe quoi. Si tu veux qu'il soit interprete comme un int pour que hex ait du sens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::cout<<std::hex << int(byte) << '\n';

  3. #3
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    J'utilise régulièrement cette méthode avec des unsigned char, et je n'ai jamais eu de problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wss << std::hex << std::uppercase << ucValue;

  4. #4
    Membre éclairé Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Par défaut
    Merci pour ta réponse rapide.
    Je parie que byte est un char.
    Oui, un unsigned char.
    Il t'affiche le char et pas n'importe quoi. Si tu veux qu'il soit interprete comme un int pour que hex ait du sens:
    D'accord.
    Je suppose qu'avec printf l'interprètation en int est implicite.
    Je savais pas qu'on pouvait faire ça.
    int est une classe en C++ ou c'est juste une variante du cast (int) ?

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    C'est un "Function-style cast". C'est une variante du cast C-style, donc à éviter comme celui-ci. Lui préférer un static_cast<int>.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre éclairé Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Par défaut
    Merci pour cette précision.

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 23/04/2013, 17h40
  2. Réponses: 1
    Dernier message: 21/05/2012, 12h08
  3. [Langage/Algorithme] Conversion hexa avec nombre de byte variables
    Par Pascale38 dans le forum C++Builder
    Réponses: 9
    Dernier message: 07/06/2011, 16h33
  4. cout n'affiche rien dans la console avec un projet Qt & codeblocks
    Par rastakouair dans le forum Code::Blocks
    Réponses: 4
    Dernier message: 25/01/2008, 17h46
  5. Afficher une buffer de pixel avec Direct3D
    Par Black_Daimond dans le forum DirectX
    Réponses: 4
    Dernier message: 27/12/2002, 22h18

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