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

Discussion :

Conversion d'un unsigned char * en Qstring et réciproquement

  1. #1
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut Conversion d'un unsigned char * en Qstring et réciproquement
    Bonjour,

    Je souhaiterai convertir un "unsigned char *" en QString, et réciproquement.
    En cherchant dans la doc, je suis tombé sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QString ret = QString::fromAscii(pBufCrypt, len1);
    qui est presque ce que je cherche, mais il se trouve que la donnée que j'ai en entrée est bien un unsigned char *, et pas juste un char *.

    (Pour info, la donnée vient d'un "RSA_private_decrypt", le décryptage me donne un mdp sous la forme d'un "unsigned char *", mais pour m'en servir dans le reste de l'appli, il me le faut en QString).

    Merci d'avance !

  2. #2
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Citation Envoyé par Rakken Voir le message
    Bonjour,

    Je souhaiterai convertir un "unsigned char *" en QString, et réciproquement.
    En cherchant dans la doc, je suis tombé sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QString ret = QString::fromAscii(pBufCrypt, len1);
    qui est presque ce que je cherche, mais il se trouve que la donnée que j'ai en entrée est bien un unsigned char *, et pas juste un char *.

    (Pour info, la donnée vient d'un "RSA_private_decrypt", le décryptage me donne un mdp sous la forme d'un "unsigned char *", mais pour m'en servir dans le reste de l'appli, il me le faut en QString).

    Merci d'avance !
    Bonjour,

    Désolé du temps de réponse ; voici tout de même une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    unsigned char * pBufCrypt = ... ;
    QString ret = "";
     
    while (*pBufCrypt)
    {
        ret.append(QChar(*pBufCrypt));
        ++pBufCrypt;
    }
    Pour l'inverse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    QString value = ...;
    unsigned char * pBufCrypt = new unsigned char[value.size() + 1];
     
    for (int i = 0; i < value.size; ++i)
        pBufCrypt[i] = static_cast<unsigned char>(value.at(i).digitValue());
     
    pBufCrypt[value.size()] = 0;
    Bonne continuation,
    Amnell.

  3. #3
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Et voici celle que j'avais trouvé (j'aurai du mettre à jour le thread, mais je dois avouer avoir été pris par le temps).

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QString chaine= "coucou";
    QByteArray qba = chaine.toUtf8();
    unsigned char *uc = (unsigned char *)qba.data();

    En tout cas, merci pour ta réponse ;-)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Rakken Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned char *uc = (unsigned char *)qba.data();
    Bonjour,

    Ceci est plutôt déconseillé. Il s'agit du cast natif du C. En C++, il est recommandé d'utiliser la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned char *uc = static_cast<unsigned char *>(qba.data());
    Cordialement.

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

Discussions similaires

  1. Problème de conversion de QString en unsigned char
    Par fgtuio dans le forum Débuter
    Réponses: 2
    Dernier message: 07/07/2012, 01h00
  2. conversion std::string -> unsigned char*
    Par acheo dans le forum Langage
    Réponses: 3
    Dernier message: 26/02/2010, 17h35
  3. Conversion string en unsigned char *
    Par abdallah2007 dans le forum Langage
    Réponses: 4
    Dernier message: 19/05/2009, 14h51
  4. [Clé de registre] Conversion char* vers unsigned char*
    Par The Lord of Nesquik dans le forum C
    Réponses: 7
    Dernier message: 03/07/2006, 23h30
  5. vector<unsigned char> et unsigned char* : conversion ?
    Par zax-tfh dans le forum SL & STL
    Réponses: 5
    Dernier message: 15/01/2006, 10h43

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