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 :

conversion en hexadecimal


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut conversion en hexadecimal
    Bonjour.Existe-t-il des fonctions simples pour convertir un int et un cstring en hexa?Si non, comment faut il faire?Et comment peut on alors spécifier la longueur de cette valeur hexa? merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    http://c.developpez.com/faq/cpp/?pag...to_stream_hexa

    Si tu bosses avec des CString tu as aussi certainement une solution spécifique dans la FAQ VC++.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Merci! Mais comment je fais pour définir la taille de ma valeur hexa?

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Je fais :

    std::ostringstream oss;
    oss << std::hex << nom__variable;

    std::string Hex = oss.str();

    et ensuite je dois faire un fprintf(fichier,"%i",nom__variable");
    mais quand je choisit par exemple 100 pour ma variable ca me donne -858993664 au lieu de 64..A quel endroit est mn erreur?

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::ostringstream oss;
    oss << std::hex << nom__variable;
    std::string Hex = oss.str();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(fichier,"%i",nom__variable");
    Quel est le rapport entre ces deux bouts de code ? La représentation hexadécimale se trouve dans ta chaîne Hex, c'est elle qu'il faut utiliser si tu veux l'afficher.

    Ensuite, fprintf c'est du C, et je ne connais pas la signification du formatteur %i donc je ne peux pas te dire si c'est ton appel à fprintf qui est erroné ou si c'est autre chose.

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Désolé...
    En fait j ai mis
    std::ostringstream oss;
    oss << std::hex << nom__variable;

    std::string Hex = oss.str();
    FILE*fichier;
    fichier=fopen("texte.txt","wt");
    frprintf(fichier,"%d",Hex);
    fclose(fichier);

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 81
    Par défaut
    frprintf(fichier,"%d",Hex);
    Hex n'est pas un entier mais une string donc %d ne convient pas ici.

    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(fichier,"%s",Hex.c_str());

  9. #9
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Hex est une chaîne, tu ne peux pas l'afficher avec un %d.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(fichier, "%s", Hex.c_str());
    Mais utilise donc du vrai C++ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::ofstream File("toto.txt");
    File << std::hex << 100;

  10. #10
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    En C++ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::ofstream fichier("texte.txt");
    fichier << Hex;
    EDIT : Grilled par Laurent !

  11. #11
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Merci beaucoup!Désolé pour toutes ces questions, mais je débute et en plus je dois réaliser ce prograzmme dans le cadre d'un stage...

  12. #12
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Juste une dernière question:comment je fait pour pouvoir convertir plusieurs autres variables? Parce que ca me met "oss redefinition" si je tente de le refaire pour un autre variable..

  13. #13
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Utilise le même flux, que tu effaces entre chaque conversion avec oss.str(""). Ou écris directement toutes tes variables si elles doivent être à la suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::ostringstream oss;
    oss << std::hex << x1 << x2 << x3;

  14. #14
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    je m'excuse d'avance, mais j arrive pas à comprendre comment modifier le code pour avoir mes valeurs hexa toujours écrites sur 2 octets...

  15. #15
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    std::ostringstream oss;
    oss << std::hex << std::setw(2) << std::setfill(0) << 10;
     
    // Sortie : 0A
    Je t'invite à retourner voir la FAQ dont le lien est donné plus haut si tu ne sais plus ce que sont setw ou setfill.

  16. #16
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Je fais :
    oss<<std::hex<<std::setw(2)<<std::setfill(0)<<nom__variable;

    mais il me met
    binary '<<':no operator defined which takes a right-hand operand of typr 'struct std::_Filljob<int>'...

  17. #17
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    tu as pensé à ?
    Tu peux poster toute l'erreur?
    Et nom__variable est de quel type?

  18. #18
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Et bien l erreur c'est ce que j ai mis, avec avant : error C2679, et après: (or there is no acceptable conversion).
    La variable c'est un int

  19. #19
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Oui j'ai mis le include

  20. #20
    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
    Dans ce cas, tu peux essayer en mettant un using namespace std; dans ton code (ou ta fonction) au lieu de spécifier directement le namespace: Peut-être que ta version de Visual ne trouve pas l'opérateur redéfini pour cette raison...

    PS: On est d'accord, ce que tu écris dans le fichier, c'est une chaîne comprenant des caractères '0' à 'F', hein...
    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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [T-SQL]fonction de conversion en hexadecimal
    Par antigone dans le forum Sybase
    Réponses: 1
    Dernier message: 11/04/2007, 09h14
  2. conversion valeur hexadecimal / adresse mémoire
    Par saturne13 dans le forum C
    Réponses: 10
    Dernier message: 04/02/2007, 20h15
  3. [CONVERSION] String -> HEXADECIMAL ...
    Par tripop dans le forum Langage
    Réponses: 9
    Dernier message: 13/01/2005, 09h42
  4. [debutant][hexadecimal]Conversion entier hexadecimal
    Par Mobaladje dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 14/05/2004, 07h50
  5. Conversion binaire -> hexadecimal
    Par barthelv dans le forum C
    Réponses: 2
    Dernier message: 06/08/2003, 10h40

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