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

C++ Discussion :

Transformer un fichier binaire en un texte lisible ("Human Readable")


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Par défaut Transformer un fichier binaire en un texte lisible ("Human Readable")
    Bonjour,
    Je veux transformer un fichier BSON (un fichier binaire, la version binaire d’un fichier JSON) en texte clair (Human Readable).

    Pour l’instant, j’ai pu transformer le fichier en une string, mais une string d’octets, ce qui est toujours illisible.

    Aussi, j'ai pu isoler chacun de ces octets dans un vector<char>.

    Je pense que chacun de ces octets est une paire de nombre hexadécimaux, c'est à dire un caractère ASCII. Comment transformer ces caractères en lettres de type "abc..." ?

    Accessoirement je dois « parser » ce fichier BSON, et je ne sais pas exactement ce que cela veut dire : attends-t-on de moi que j’extraie l’information, et que je la mette en « human readable », ou bien que j’organise aussi ces données dans une base ?

    Merci beaucoup.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 151
    Billets dans le blog
    4
    Par défaut
    Salut,

    je ne connaissais pas ce format, heureusement mon super pote Google oui et en 2s on tombe sur les spéc http://bsonspec.org/spec.html
    Partant de là, tu devrais pouvoir traduire ton fichier. Hint : on ne fait pas les devoirs ici.
    Parser signifie surement juste de le décoder du binaire vers le full text.
    Y'a juste un micro truc à faire attention, c'est qu'il est encodé en little-endian
    Each type must be serialized in little-endian format.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Attention, toute fois, parser, c'est "décoder", passer par exemple du code d'un entier à un int, pas à la string représentant sa valeur.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Par défaut
    Bonjour et merci pour vos réponse.

    Bousk, très bien. Le truc c'est que je ne suis pas très à l'aise avec ce que j'ai extrait du fichier BSON, c'est à dire chaque octet un par un, que j'ai stocké dans des char. Comment est ce que je peux interpréter ces informations ? Comment les comparer avec les "\x0..." de la spécification de BSON ?

    Merci encore.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 151
    Billets dans le blog
    4
    Par défaut
    Il faut parcourir tout ton buffer.
    Tu commences par le début, tu dois lire un int32 qui définit la taille du document, puis une liste d'éléments, enfin un \x00 qui est la fin du document.
    Puis tu lis chaque élément, tu extrais le premier octet, le compare à la liste de la spéc, et agis en conséquence.
    Si tu lis \x01 il sera suivi du nom de l'élément, puis de sa valeur en double.
    Un nom d'élément c'est une suite de byte terminée par \x00
    etc
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Il faut parcourir tout ton buffer.
    Si tu lis \x01 il sera suivi du nom de l'élément, puis de sa valeur en double. etc
    Oui j'ai compris.
    Ce que je n'ai pas compris, c'est comment je compare un octet (char) de mon buffer avec un \x01 : \x01 est il une string, un entier ?
    De quelle manière puis-je les comparer ? Comment sais-je que mon octet est un \x01 ?

    Merci encore.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 151
    Billets dans le blog
    4
    Par défaut
    Euh... je t'apprends pas que l'opérateur de comparaison est == et que \xAB est une écriture héxadécimale qu'on trouve aussi sous la forme 0xAB j'espère ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Euh... je t'apprends pas que l'opérateur de comparaison est == et que \xAB est une écriture héxadécimale qu'on trouve aussi sous la forme 0xAB j'espère ?
    Eh bien si ^^. Ça choque quelqu'un ? Allez merci a+

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/03/2007, 14h36
  2. Réponses: 21
    Dernier message: 15/12/2006, 15h54
  3. [TP] Création fichier texte lisible sous Windows
    Par frechy dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 02/03/2006, 20h42
  4. fichier binaire ou texte , que choisir ?
    Par Djob dans le forum C++
    Réponses: 4
    Dernier message: 19/12/2005, 16h21
  5. fichier binaire ou texte
    Par soussou dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/06/2002, 13h39

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