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++

  1. #1
    Membre habitué 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
    Points : 177
    Points
    177
    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 éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    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 éprouvé
    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
    Points : 1 067
    Points
    1 067
    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 habitué 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
    Points : 177
    Points
    177
    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 sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    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>.

  6. #6
    Membre habitué 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
    Points : 177
    Points
    177
    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, 18h40
  2. Réponses: 1
    Dernier message: 21/05/2012, 13h08
  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, 17h33
  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, 18h46
  5. Afficher une buffer de pixel avec Direct3D
    Par Black_Daimond dans le forum DirectX
    Réponses: 4
    Dernier message: 27/12/2002, 23h18

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