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 :

les char ne peuvent pas être formaté avec cout !?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 280
    Par défaut les char ne peuvent pas être formaté avec cout !?
    Bonjour,

    Je compile avec G++. Lorsque je fais :

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char e=11;
    cout << dec << e;

    ou

    je n'obtiens pas ce que je veux sur la sortie standard, c'est à dire une valeur hexadécimal sur un octet, ou une valeur décimal de 0 à 255. Je n'obtiens quoi que je fasse que la caractère ASCII correspondant.

    Comment formater un char en hexadécimal ?

    Merci pour vos réponses.

  2. #2
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << hex << (int) e << endl;
    Cordialement.

  3. #3
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Histoire d'en rajouter sur le sujet : tu sais que c++ est un langage fortement typé, ce qui permets à plusieurs opérateurs << de coexister (polymorphisme ad hoc). Et bien la version qui prend un char en paramètre traite celui-ci comme s'il s'agissait non pas d'un nombre, mais d'un caractère à ajouter dans le flux. Du coup, on ne peux pas essayer de le transformer en hexadécimal
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 280
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Et bien la version qui prend un char en paramètre traite celui-ci comme s'il s'agissait non pas d'un nombre, mais d'un caractère à ajouter dans le flux. Du coup, on ne peux pas essayer de le transformer en hexadécimal
    Bonjour,

    Oui... c'est là tout mon problème ce que je voudrais obtenir c'est une sortie hexadécimal sur un octet (du style FF, EF etc..).

    Quand je fais un cast pour du int, j'obtiens une sortie, certes, en hexadécimale mais sur 4 octets...

    Je n'ai pas de type numérique sur un octet...

    De plus les octets de poids fort ne sont pas forcément à zéro donc la valeur int du char ne correspond pas du tout à ma valeur de départ... J'ai essayé de faire un cast avec des unsigned int c'est le même problème...

    Merci...

  5. #5
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << hex << setw(2) << setfill('0') << (unsigned int) e << endl;
    Cordialement.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 280
    Par défaut
    Citation Envoyé par r0d Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << hex << setw(2) << setfill('0') << (unsigned int) e << endl;
    Cordialement.
    Merci je vais essayer ça

    encore merci à vous deux pour votre aide

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 280
    Par défaut
    Citation Envoyé par r0d Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << hex << setw(2) << setfill('0') << (unsigned int) e << endl;
    Cordialement.
    et bien non... ça ne marche pas... mon compilo connait pas setw et setfill. je vais regarder si je le trouve dans la doc...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/08/2013, 11h05
  2. Réponses: 2
    Dernier message: 01/03/2013, 15h54
  3. les packages ne peuvent pas être imbriqués
    Par dom_dev dans le forum ActionScript 3
    Réponses: 5
    Dernier message: 26/03/2009, 10h36
  4. Réponses: 6
    Dernier message: 15/08/2008, 12h09
  5. Réponses: 3
    Dernier message: 04/09/2007, 21h44

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