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

Qt Discussion :

Transformer un QByteArray en QString


Sujet :

Qt

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 195
    Points
    195
    Par défaut Transformer un QByteArray en QString
    Salut,
    J'explique ma situation : j'ai un programme qui télécharge un fichier venant d'un autre programme, comme ce sont des fichiers, le contenu est envoyé sous la forme d'un QByteArray.

    J'ai ensuite besoin d'utiliser ce QByteArray de la même façon qu'un QString.

    Le problème étant que je n'ai pas encore trouvé de moyen pour passer un QByteArray en QString.

    Le constructeur de QString prenant un QByteArray ne marche pas, la méthode append non plus, j'ai même tenté un QDataStream et un QTextStream, sans succès.

    Donc voila, connaîtriez-vous une méthode pour passer un QByteArray en QString?

    Merci d'avance

  2. #2
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Tu es sure que la constructeur de QString ne marche pas ??
    Peux tu nous fournir un bout de code et nous expliciter un peu plus ton problème. En gros il y a quoi dans ta QString un fois contruite avec le QByteArray ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  3. #3
    Membre habitué Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Points : 143
    Points
    143
    Par défaut
    Tu pourrais combiner dans une boucle :

    La méthode de QByteArray :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char QByteArray::at ( int i ) const
    et la méthode de QString :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QString fromAscii ( const char * str, int size = -1 )
    Afin de faire une copie bits à bits ...

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 195
    Points
    195
    Par défaut
    Lorsque j'affiche le QString, ça n'affiche rien (Sur un QMessageBox, y'a aucun message)

    Le QByteArray n'est pas vide, j'ai testé sa taille (Et il vaut 32, ce qui est le double de ce que la QString devrait être)

    Sinon oui je suis certain que le constructeur de QString ne marche pas, j'ai aussi essayé d'utiliser QVariant pour transformer, mais ça ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    QByteArray messageRecu;
        QString test;
        in >> messageRecu;
        test = messageRecu;
        QMessageBox::information(NULL,"Test",test);
    in est un QDataStream utilisé pour récupérer les données d'un QTcpSocket.

    in >> test fonctionne très bien, mais j'aimerais justement avoir un QByteArray ou un QString selon mes besoins.

    Une idée?

    EDIT : Pour la copie bit a bit, j'y ai pensé mais bon j'imagine que Qt à bien une solution qui fonctionne, pourquoi réinventer la roue

  5. #5
    Membre habitué Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Points : 143
    Points
    143
    Par défaut
    Enfin je ne sais pas si j'ai bien compris et il y a surement mieux ..

  6. #6
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Si in >> test marche tres bien tu inverses le problème avec ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QByteArray messageRecu = test.toAscii ();
    Est ce que cela marche ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 195
    Points
    195
    Par défaut
    Oui oui ça fonctionne, mais ça revient a stocker du contenu binaire dans un QString, et bon, je crois pas que ce soit fait pour ça

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Dans quel format est le texte dans le QByteArray (Latin1, UTF-8, UTF-16, ...) ?

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 195
    Points
    195
    Par défaut
    Ce n'est pas un texte la plupart du temps, c'est un fichier binaire, un peu comme les dll de Qt
    C'est pour ça que le contenir dans QString, je pense que c'est une mauvaise idée.

    Mais quand c'est du texte, j'en sais rien du tout

  10. #10
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Donc je comprend pas bien en fait ce que tu veux faire et surtout le pourquoi ? un coup tu prefere une QString un coup un QByteArray. Un coup c'est des caractere un coup non. Peux tu nous donner plus d'explication. Car là j'ai vraiment du mal.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  11. #11
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 195
    Points
    195
    Par défaut
    Selon la situation, je dois pouvoir avoir soit une QString, soit un QByteArray

    Il n'y a qu'une fonction de récupération des données, et celle-ci renvoie un QByteArray, et selon la situation, il faudrait que je récupère cela en QString

    QByteArray -> QString
    C'est juste ça que je demande

  12. #12
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Tu peux montrer ou nous expliquer un peu plus le contenu de ton QByteArray car chez moi le bout de code ci-dessous fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QByteArray myArray = "un QByteArray";
    QString str(myArray);
    A mon avis, je suis d'accord avec Sylvain Togni ce qui pose problème c'est le type de codec utilisé pour le texte de ton QByteArray. Donc si on peut avoir des précision de ce coté là ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

Discussions similaires

  1. Conversion QString -> QByteArray (encodage)
    Par pasqual dans le forum Qt
    Réponses: 4
    Dernier message: 02/03/2010, 14h23
  2. Petit problème QString et QByteArray
    Par tiagocerqueira dans le forum Qt
    Réponses: 0
    Dernier message: 02/02/2010, 18h07
  3. transformer un jour en JJ/MM/AA
    Par gemini_010 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 08/11/2002, 22h55
  4. Transformer un caractère en type énuméré
    Par HT dans le forum Langage
    Réponses: 3
    Dernier message: 22/10/2002, 20h46
  5. FFT(Fast Fourier Transform)
    Par IngBen dans le forum Traitement du signal
    Réponses: 6
    Dernier message: 23/05/2002, 16h35

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