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 :

Problème de conversion d'un QByteArray


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Par défaut Problème de conversion d'un QByteArray
    j'essaie de convertir un QByteArray comprenant 4caractères représentant un nombre au format hexadécimal en short, mais ça ne marche pas avec les nombres négatifs, quelqu'un voit quelque chose qui ne va pas ou a déjà eu le problème?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    qDebug() << "test";
        QByteArray ba;
        ba.resize(4);
        ba[0] = 'F'; ba[1] = 'F'; ba[2] = 'F'; ba[3] = 'F';
        qDebug() << ba;
        bool ok = false;
        qDebug() << ba.toShort(&ok, 16);
        qDebug() << ok;
    Après ce code, ok vaut faux et toShort retourne 0

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Quand tu met 'F' dans QByteArray, pour toi c'est un Byte ou tous est à 1 ou le caractère F ??

  3. #3
    Membre chevronné
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Par défaut
    Ba c'est un caractère F qui représente tous les bits à un du vrai chiffre, mais mon QByteArray vient d'un micro qui m'envoie des nombre de 2octets via un port série sous forme de caractères ascii.

    PS: ça marche très bien comme ça pour les nombres positifs

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    1- dans se cas il te faut convertir ton code hexa en non hexa http://qt.developpez.com/doc/latest/...y.html#fromHex
    2- un short est sur 2 bytes or tu en à 4. y as donc des cas ou il ne sait pas faire.
    Je pense que tu devrais utiliser QDataStream pour récupérer tes nombres.
    http://qt.developpez.com/doc/latest/...#QDataStream-5

  5. #5
    Membre chevronné
    Avatar de haraelendil
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 283
    Par défaut
    Hmmm, nan c'est pas ça, ce que je reçoit est une chaine de caractères ascii normaux donc 4caractères représentent 2octets (F = 1111).

    Donc FFFF devrait me donner -1 normalement, FFFE = -2, etc.

    Il n'y a donc pas lieu d'utiliser fromHex ici non?

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par haraelendil Voir le message
    Hmmm, nan c'est pas ça, ce que je reçoit est une chaine de caractères ascii normaux donc 4caractères représentent 2octets (F = 1111).

    Donc FFFF devrait me donner -1 normalement, FFFE = -2, etc.

    Il n'y a donc pas lieu d'utiliser fromHex ici non?
    La représentation n'est pas le même.
    Le caractère F n'est pas 1111 en binaire et est sur 8 bits. C'est la valeur en hexa F que correspond à 1111.
    Donc si tu utilise fromHexa sur ton ByteArray, tu devrais te retrouve avec un ByteArray comme tu l'imagine.

Discussions similaires

  1. problème de conversion de dimension dans BUSINESS OBJECT
    Par greatmaster1971 dans le forum Deski
    Réponses: 4
    Dernier message: 28/04/2014, 13h15
  2. - [CAST ou CONVERT] Problème de conversion de date
    Par Boublou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 14h31
  3. Problème de conversion 3DS->.X
    Par JBernn dans le forum DirectX
    Réponses: 5
    Dernier message: 08/04/2004, 19h08
  4. Problème de conversion unicode
    Par djmalo dans le forum C
    Réponses: 5
    Dernier message: 09/03/2004, 11h48
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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