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 :

QbyteArray en entier


Sujet :

Qt

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 68
    Points : 54
    Points
    54
    Par défaut QbyteArray en entier
    Bonjour,

    J'aimerai savoir comment convertir exactement un QByteArray en int ou Uint...

    voila mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    QByteArray test;
    test[0] = 0x00;
    test[1] = 0x00;
    test[2] = 0x55;
    test[3] = 0x3f;
    quint32 toto = (quint32)(SwapQByteArray(_AmsPortArray).toUInt());
    Le problémé c'est que quand je fais ca, toto = 0, loool

    aidez moi svp???

  2. #2
    Membre confirmé

    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Points : 490
    Points
    490
    Par défaut
    Tu peux utiliser QDataStream pour aisément lire et écrire dans QByteArray.
    Dans ton cas tu peux faire :

    QDataStream stream(&test);
    qint32 toto<<stream;

  3. #3
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonjour tiagocerqueira

    Tu ne précises pas à quoi correspond SwapQByteArray et _AmsPortArray.

    La fonction toUInt() existe pour QByteArray( http://qt.developpez.com/doc/latest/qbytearray/#touint) mais il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uint myUInt = test.toUInt();
    Cette fonction lit ton QByteArray comme une QString et essaie de la convertir. Or ta "chaine de caractères" est '\0', '\0', 'U', '?'. Outre le fait que cette "chaine de caractères" ne contient pas de chiffre, elle commence par le caractère '\0'... qui est la caractère indiquant la fin d'une chaine de caractère.
    Pour utiliser toUInt(), tu dois écrire une chaine valide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QByteArray MyByteArray("1234");
    uint myUInt = MyByteArray.toUInt();
    std::cout << "MyUInt : '" << MyByteArray.data() << "' > " << myUInt << std::endl;
    Si maintenant, tu souhaites simplement convertir "octet par octet" ton QByteArray en uint, il faut transtype (mais c'est moche ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    test[0] = 0x01;
    test[1] = 0x00;
    test[2] = 0x00;
    test[3] = 0x00;
    quint32 myUInt2 = *((quint32*) test.constData()); // contient 1
    Par contre, je suppose qu'il faut faire attention à l'encodage des uint (little endian et big endian par exemple)

    Bon courage.

    EDIT : bien vu, je connaissais pas QDataStream

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

Discussions similaires

  1. [8086] Affichage d'un entier de 32 bits
    Par elNINIo dans le forum Assembleur
    Réponses: 12
    Dernier message: 10/05/2003, 20h33
  2. FormatFloat pour les entiers !?
    Par Lung dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2003, 15h20
  3. format entier
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 20/03/2003, 09h18
  4. Réponses: 9
    Dernier message: 17/01/2003, 11h45
  5. Réponses: 4
    Dernier message: 05/06/2002, 12h15

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