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 :

Conversion d'un QByteArray en qint16


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Par défaut Conversion d'un QByteArray en qint16
    Bonjour,

    Alors je sais que c'est un problème qui semble récurrent et déjà traité ici.

    Mais après avoir testé plusieurs solutions par ci par là j'avoue que je sèche (et commence légèrement à craquer!!)

    Méthode 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    qint16 x = response->at(index); //me donne fffa
    x = x << 8;  //me donne fa00
    x |= qint8(response->at(index+1)); //devrait me donner fabf mais j'ai f9bf!!
    Echec total, le logiciel fait une addition!! Mais je veux juste concatener!!

    Méthode 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int y = int(response->at(index))<<8;
    int z = int(response->at(index+1));
    qint16 res = y + z;
    Nouvel échec, le résultat est identique à la méthode 1.

    Méthode 3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qint16 res = temp.toInt();
    Là le retour est simple j'ai 0, mais bon cela suit la logique car j'utilise des RAW DATA.

    Méthode 4:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qint16 res = *((qint16*) temp.constData()); // temp étant un QByteArray contenant fa bf
    Là cela fonctionne presque sauf que j'ai bffa !!! Hors j'avoue galérer avec le little/big indian et j'aimerai passer outre cette problèmatique...

    Quelqu'un pourrait il m'aider?
    Merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Par défaut
    Après avoir fait hara-kiri avec une saucisse plate j'ai trouvé une solution qui fonctionne très bien!!

    (Bon c'est pas de moi j'ai fait appel à un jocker!!)

    Voici la solution ultime pour ceux qui veulent convertir 2 octets d'un ByteArray en qint16/quint16:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    qint16 x = array.at(index) << 8;
    qint16 y = array.at(index+1);
     
    qint16 res = x | ( y & 0x00FF );
    L'avantage de cette méthode et qu'elle permet de passer outre le problème de little/big endian.
    En espérant que cela serve .

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

Discussions similaires

  1. Problème de conversion d'un QByteArray
    Par haraelendil dans le forum Qt
    Réponses: 10
    Dernier message: 28/07/2010, 19h53
  2. Conversion QString -> QByteArray (encodage)
    Par pasqual dans le forum Qt
    Réponses: 4
    Dernier message: 02/03/2010, 14h23
  3. Conversion Hexa et QByteArray
    Par sardik dans le forum Qt
    Réponses: 6
    Dernier message: 19/05/2009, 10h48
  4. [Conversions] Millisecondes...
    Par agh dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h25
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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