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 :

Convertir une valeur HEXA en chaine de caractère


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 26
    Par défaut Convertir une valeur HEXA en chaine de caractère
    Bonjour à tous,
    Je suis débutant en C/C++, et c'est pour cela que je vous sollicite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    U32 MaVarHex;
    const char * pText;
    MaVarHex : 0x44424442;
    Je souhaite transformer ma variable MaVarHex en ascii (0x44424442 donnera "DBDB") pour ensuite associer chez chaine ASCII à ma variable pText.
    J'espère que c'est clair pour vous.
    A+

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    vector<char> v(5);
    v[0] = static_cast< char >((MaVarHex >> 24) & 0x00FF);
    v[1] = static_cast< char >((MaVarHex >> 16) & 0x00FF);
    v[2] = static_cast< char >((MaVarHex >> 8) & 0x00FF);
    v[3] = static_cast< char >((MaVarHex) & 0x00FF);
    v[4] = '\0';
    const char *pText = &v[0];
    Et on peut faire mieux avec une string, un ostringstream et quelques appels à put()...

    Edit: Laurent !
    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.

  3. #3
    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
    5
    char Text[4];
    Text[0] = static_cast<char>(MaVarHex & 0xFF000000 >> 24);
    Text[1] = static_cast<char>(MaVarHex & 0x00FF0000 >> 16);
    Text[2] = static_cast<char>(MaVarHex & 0x0000FF00 >> 8);
    Text[3] = static_cast<char>(MaVarHex & 0x000000FF);
    Par exemple.
    Ne pas oublier le \0 final si tu veux en faire une chaîne de caractères valide.

    Mais ça sent la manip douteuse, d'où vient ta variable MaVarHex ?

    Il suffit de bien utiliser les streams...
    Je ne pense pas, vu qu'ici il n'y a aucune conversion à faire, juste un découpage de l'entier en 4 caractères distincts.
    EDIT : hehe...

  4. #4
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 26
    Par défaut
    Salut.
    Voici le code que j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VERSION_FIRMWARE[0] = static_cast<char>(0x34);
    et ca ne marche pas. J'obtient des erreurs de compilations :
    error C2065: 'static_cast'*: identificateur non déclaré
    error C2059: erreur de syntaxe*: 'type'
    Pourquoi cette erreur?
    Par contre j'ai écrit ceci et ca à marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VERSION_FIRMWARE[0] = (char)(0x34);

  5. #5
    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
    Tu ferais pas du C par hasard (ici on est sur le forum C++) ?

  6. #6
    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
    Es-tu sûr de compiler en C++ ?
    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.

  7. #7
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 26
    Par défaut
    Evidement que je souhaite compiler en C++ !
    Donc d'après vos remarques, je suppose que l'erreur que j'ai pour static_cast, serait que je compile en C au lieu du C++.
    Donc j'en conclue ... que sous Visual Studio C++.NET, on peut spécifier une compilation en C ou en C++ !? Comment faire?
    Je sais que je peux paraître un peu nulose mais je cherche qu'à apprendre .

  8. #8
    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
    La première chose à faire pour choisir le type de compilation, c'est le nom du fichier.
    Ensuite, il y a une option de compilation qui peut forcer l'un ou l'autre mode.

    Et surtout, tu peux vérifier en insérant ceci au début de ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifndef __cplusplus
    #error Je ne sais pas avec quoi tu compiles mais c est pas du C++
    #endif
    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.

  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
    Ca se change dans les options du fichier, mais normalement si l'extension de celui-ci est une extension C++ valide il compile en C++ par défaut.

    A mon avis tu as un fichier en .c ou .C, non ?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/02/2013, 18h01
  2. Réponses: 1
    Dernier message: 14/11/2007, 11h53
  3. Convertir chaine contenant une valeur Hexa en cette Valeur
    Par parp1 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/05/2007, 09h56
  4. Remplacement d'une valeur hexa dans une chaine
    Par raoulchatigre dans le forum C++
    Réponses: 7
    Dernier message: 18/09/2006, 16h27

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