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 :

[C++] Convertir un hexa d'une string en caractère ascii


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 31
    Par défaut [C++] Convertir un hexa d'une string en caractère ascii
    Bonjour,

    Je suis tout nouveau sur ce forum, merci d'avance pour votre aide !

    Je développe avec QT. Dans mon application, je récupère la valeur d'un champ de la forme "20:39:3A:B1" dans une QString. Je split en fonction de ":" pour obtenir un tableau de QString contenant "20" puis, "39", ...

    Mon problème, c'est que je ne sais pas comment faire pour dire au programme que le contenu de ma QString est une valeur hexadécimal...

    Voici le code qui fonctionne impeccable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    QString strAscii;
        QStringList strListHex = teHex->toPlainText().toLower().split(":");
     
        for(int i=0;i<strListHex.size();i++)
        {
            char hex[5], *stop;
                    hex[0] = '0';
                    hex[1] = 'x';
                    hex[2] = strListHex.at(i).toStdString().at((size_t) 0);
                    hex[3] = strListHex.at(i).toStdString().at((size_t) 1);
            strAscii.append((char)strtol(hex, &stop,16));
        }
     
        teASCII->setText(strAscii);
    Ma question: Comment faire l'équivalent en C++ pure sans ce "char hex[5]" et strtol(), mais plutôt avec un stringstream ou autres?

    Merci beaucoup !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 31
    Par défaut
    Merci beaucoup ! J'avais regardé et j'avais essayé sans grand succès...mais maintenant ça marche avec ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    QString strAscii;
        QStringList strListHex = teHex->toPlainText().toLower().split(":");
     
        for(int i=0;i<strListHex.size();i++)
        {
            int x;
     
            std::istringstream iss( strListHex.at(i).toStdString() );
            iss >> std::hex >> x;
            strAscii.append((char) x);
        }
     
        teASCII->setText(strAscii);
    Y a-t-il moyen d'encore raccourcir le code en enlevant ce "int x" ?

    Je demande ça juste par curiosité car ça marche nickel maintenant !

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

Discussions similaires

  1. entier vers hexa dans une string
    Par Invité dans le forum Général Python
    Réponses: 10
    Dernier message: 15/07/2012, 17h47
  2. Convertir un char[] en une String
    Par Adorien dans le forum Langage
    Réponses: 3
    Dernier message: 08/04/2010, 12h05
  3. Convertir le contenu d'une String en ligne de code
    Par DamS2502 dans le forum Langage
    Réponses: 5
    Dernier message: 29/04/2008, 07h40
  4. Réponses: 1
    Dernier message: 31/12/2007, 08h12
  5. remplir un enregistrement d'une string >250 caractère
    Par zidenne dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/09/2006, 09h30

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