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 :

Aide à la création d'une bibliothèque binaire


Sujet :

Qt

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 91
    Points : 48
    Points
    48
    Par défaut Aide à la création d'une bibliothèque binaire
    Bonjour à tous,

    J'ai comme projet de développer un éditeur de librairie binaire avec Qt comme interface graphique. La partie dictionnaire (structure de la librairie) est terminée.
    Maintenant j'ai mes données qui ont un type (int, int signé, float, bool, ascii; enum, etc..), une adresse dans la librairie, une taille d'accès, un rang msb, un rang lsb qu'il faut que j'écrive dans le fichier librairie.

    Mais impossible de savoir comment procéder. Pouvez vous me conseiller la démarche à suivre.

    Je le fais en Cesque avec un fichier et des coups de write des variables dans le fd du fichier.
    En C++ par je ne sais quelle méthode.
    Ou en Qt par les QDataStream (ca gère tout seul l'endianess).

    Il me faut une méthode qui prenne en compte tous les paramètres (pouvoir écrire en big/little endian, pouvoir écrire à l'adresse voulue, des int de 8,4,3,2,1 octets par exemple, tenir compte des msb lsb (je ne comprends pas cette notion d'ailleurs..), etc..)

    Je suis un peu perdu tout dans ca, si quelqu'un pouvais me mettre sur la voie ce serait vraiment génial.

    Merci d'avance.

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 91
    Points : 48
    Points
    48
    Par défaut
    Bon puisque personne n'a une idée je vais détailler ou j'en suis.

    J'ai des variables que je dois pouvoir écrire dans un fichier en little ou big endian.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    quint64 i1 = 127;
    quint64 i2 = 18;
    quint64 i3 = 1;
    quint64 i4 = 10;
    qint64 i5 = 11;
    qint64 i6 = 4660;
    // Je dois écrire ces variables en big endian.
     
    QFile file("lol");
      if (file.open(QIODevice::WriteOnly | QIODevice::Unbuffered) == false)
        {
          QMessageBox::critical(this, "Erreur critique", "Impossible de creer un fichier");
          return ;
        }
    QDataStream stockage(&file);
    char data[8];
    memcpy(data, &(i1), 2); // l'access size de i1 est de 2
    memcpy(data + 2, &(i2), 1); // l'access size de i2 est de 1
    memcpy(data + 3, &(i3), 1); // l'access size de i3 est de 1
    memcpy(data + 4, &(i4), 1); // l'access size de i4 est de 1
    memcpy(data + 5, &(i5), 1); // l'access size de i5 est de 1
    memcpy(data + 6, &(i6), 2); // l'access size de i6 est de 2
    //si je veux écrire en big endian
    stockage.setByteOrder(QDataStream::BigEndian);
    sinon
    stockage.setByteOrder(QDataStream::LittleEndian);
    stockage.device()->write((char*)data, 8);
    file.close();
    Sur Ubuntu j'obtiens dans mon fichier (hexdump) :
    007f 0112 0b0a 1234
    Sur Windows j'obtiens :
    7f00 1201 0a0b 3412
    Hélas mon responsable me dit que je dois obtenir :
    007f 1201 0a0b 1234
    Je suis vraiment pas calé dans ce domaine, je sais pas si je m'y prends bien ou si je dois faire autrement.
    Si quelqu'un a une idée (pas trop compliqué (genre décallage de bit ), je le remercie)

Discussions similaires

  1. Création d'une bibliothèque utilisant les sockets
    Par PouerK dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 26/02/2008, 07h43
  2. Création d'une bibliothèque
    Par nabilfaouzi dans le forum C
    Réponses: 5
    Dernier message: 15/02/2008, 17h30
  3. Création d'une bibliothèque.
    Par Kr00pS dans le forum C
    Réponses: 11
    Dernier message: 12/06/2006, 15h54
  4. Outil d'aide à la création d'une DTD
    Par Elmilouse dans le forum Valider
    Réponses: 1
    Dernier message: 28/02/2006, 01h56
  5. [MySQL] Aide à la création d'une requête
    Par tom06440 dans le forum Requêtes
    Réponses: 6
    Dernier message: 19/10/2005, 22h05

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