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 :

string > hex


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Points : 8
    Points
    8
    Par défaut string > hex
    (je précise que j'ai consulté la FAQ)

    Je suis en possession d'une chaine de caractère qui contient un code hexa du type :

    "0x96000007"

    je dois convertir cette chaine en un long ui contient la meme valeur hexadecimale

    j'ai essayé de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	    std::istringstream iss( mastring  );
    	    long nombre;
    	    iss >> hex >> nombre; 
    	    cout << nombre << endl;
    mais cela ne fonctionne pas et nombre indique 0...

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 161
    Points
    161
    Par défaut
    En espérant que ça puisse t'aider :
    J'ai éxécuté ton code, j'ai eu un résultat incohérent. J'ai passé nombre en unsigned long et le résultat est correct.

  3. #3
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Et sauf erreur de ma part, istringstream est déprécié, non ?
    istrstream avec un #include <strstream> me semble plus à la mode.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par Herode
    Et sauf erreur de ma part, istringstream est déprécié, non ?
    istrstream avec un #include <strstream> me semble plus à la mode.
    Mon compilateur (mingw/g++ 3.4.2) me dit que c'est le contraire : strstream serait déprécié.

  5. #5
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Oui oui je confirme, c'est (i|o)stringstream qui est "à la mode".
    strstream est l'ancien nom, surement.
    L'entête qui va avec stringstream est <sstream>.

  6. #6
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Autant pour moi !

  7. #7
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Pas une question de mode. IIRC, strstream faisait parti des anciens en-tête non standard mais relativement portables. GCC a une politique assez bizarre de supporter l'ancienne bibliothèque de flux pseudo-propriétaire dans l'espace de noms de la SL, et en marquant ... "deprecated" quand on s'en sert.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Points : 403
    Points
    403
    Par défaut
    Bonsoir,

    Avec ce code tout semble fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #include <iostream>
    #include <sstream>
    #include <string>
     
    using namespace std ;
     
    void do1( const string& mastring)
    { istringstream iss( mastring  );
      long nombre;
      iss >> hex >> nombre;
      cout << nombre << endl;
      /* cela retourne 1073821816 , est-ce ok ? */
    }
     
    int main()
    { do1( "0x96000007"  ) ;
      return 0 ;
    }
    A vrai dire je ne vois où est le problème.
    C' est peut-être un débordement de capacité d' un hexadécimal vers un 32 bits signé ?

    Cela vient-il du compilateur ou de l' 'operating system' ?
    Je ne vois pas.

    Cordialement.

  9. #9
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    0x96000007 vaut 2516582407, ce qui est supérieur à 2^31-1 (la valeur maximale d'un entier de 32 bits signé) mais inférieur à 2^32-1 (la valeur maximale d'un entier de 32 bits non signé).
    Il faut donc un unsigned long.
    Boost ftw

Discussions similaires

  1. [XCode] String en Hex (UIColor)
    Par shadow578 dans le forum Objective-C
    Réponses: 1
    Dernier message: 27/02/2013, 09h42
  2. String to hex
    Par TheCaribouX dans le forum C
    Réponses: 18
    Dernier message: 23/09/2009, 18h51
  3. Hex to string
    Par Funnyz dans le forum Débuter
    Réponses: 9
    Dernier message: 20/06/2009, 23h19
  4. convertion hex vers string
    Par mmarcoboss dans le forum Débuter
    Réponses: 5
    Dernier message: 11/01/2008, 08h03
  5. Convertion HEX en String
    Par zejo63 dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 05/07/2007, 23h54

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