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 :

Lire un fichier .BIN


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2019
    Messages : 31
    Points : 22
    Points
    22
    Par défaut Lire un fichier .BIN
    Bonjour,

    Je voudrais lire un fichier '.bin ' qui est écrit en HEX. Et voici un aperçu du fichier (1° ligne):

    3f00 2011 4000 083f 0500 083f 0500 083f

    Merci pour toute aide.

    Bonne journée.
    Alain

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 628
    Points : 10 553
    Points
    10 553
    Par défaut
    C'est assez trivial

    Tu vas lire des caractères. Tu vas lire 4 caractères par 4 caractères.
    Mais comme ce sont des caractères, tu n'as qu'a retrancher le caractère '0'. Exemple '9' - '0' -> 9, le chiffre.
    Pour les lettres 'A', 'B', 'C', 'D', 'E', 'F', il faut retrancher le caractère 'A' et ajouter 10. Exemple 'B' - 'A' + 10 -> 11, le nombre.

    Maintenant c'est fini, c'est comme en décimal. 0x2A31 = 1x160 + 3x161 + 10x162 + 2x163


    Édit : merci @Guesset pour sa correction. Et effectivement l'endianness (boutisme en français) est important, mais impossible à connaître à moins d'1 B.O.M. (byte order mark, indicateur d'ordre des octets)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2019
    Messages : 31
    Points : 22
    Points
    22
    Par défaut
    Bonjour et merci pour votre réponse,

    Honnêtement, je suis un peu désemparé. Je recherche une manière, un convertisseur, un fonctionnalité dans C++ ..., pour lire en intégralité un fichier .bin
    Normalement (!??) c'est un fichier .cpp contenu dans ce fichier.bin

    Merci pour votre écoute et j’espère avoir su vous transmettre ma préoccupation.

    Bonne journée.

    Alain

  4. #4
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 564
    Points : 7 640
    Points
    7 640
    Par défaut
    Bonjour,

    Le fichier que tu veux convertir est un fichier texte.
    Il contient un texte décrivant en hexadécimal des mots de 16 bits.
    Un fichier qui a le suffixe .bin est un fichier dans un format dit propriétaire. Cela correspond donc à des données opaques qui ne sont compréhensibles que par celui qui l'a créé. Ces mots hexadécimaux semblent correspondre à un codage binaire qui me parait être un dump de mémoire qui semble correspondre du code machine. Une chose certaine, ça n'est pas un texte, donc ça n'est certainement pas un fichier .cpp, d'où sors-tu ce fichier?

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Bonjour,

    Un fichier .bin est un programme compilé, exécutable (il doit quand même être assez ancien : MS DOS )
    Si les cons volaient, il ferait nuit à midi.

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 427
    Points : 43 047
    Points
    43 047
    Par défaut
    Un fichier .bin est un programme compilé, exécutable
    Un fichier .bin, ça peut être tout et n'importe quoi, pas forcément un programme compilé. Tu pourras le lire mais sans savoir ce qu'il est censé contenir, tu ne pourras pas l'exploiter.

    Ca peut être un firmware de routeur, un format propriétaire.

    Si c'est lié à du C/C++ l'aspect cyclique pourrait me faire penser à un enregistrement du contenu d'une structure (c) ou d'un objet (c++) contenant par exemple des int, mais ça reste une spéculation et sans savoir ce que c'est censé contenir, on en revient au même problème.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 628
    Points : 10 553
    Points
    10 553
    Par défaut
    Citation Envoyé par droggo Voir le message
    Un fichier .bin est un programme compilé, exécutable
    ouais, mais 1 fichier exécutable c'est du binaire et non pas des caractères qui forment des chiffres hexadécimaux.


    Citation Envoyé par Alidalger Voir le message
    Je recherche une manière, un convertisseur, un fonctionnalité dans C++ ..., pour lire en intégralité un fichier .bin
    je pense à la fonction sscanf (<- lien cplusplus.com en anglais) ... mais il faut savoir combien de nombres contient 1 ligne et qu'il soit fixe/ constant.

  8. #8
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 324
    Points : 4 134
    Points
    4 134
    Par défaut
    Bonjour Foetus,

    Citation Envoyé par foetus Voir le message
    ...Mais comme ce sont des caractères, tu n'as qu'a retrancher le caractère '1'. Exemple '9' - '1' -> 9, le chiffre...
    Je pense que ta solution correspond exactement à la demande cependant pour les caractère de '0' à '9', ce n'est pas '1' qu'il faut retirer mais '0'.

    Par ailleurs il y a un présupposé sur l'endian que nous ne connaissons pas.
    Pour reprendre ton exemple :
    2A31 = 1x160 + 3x161 + 10x162 + 2x163 = 10801
    mais avec un endian inverse :
    2A31 = 1x163 + 3x162 + 10x161 + 2x160 = 5026

    Salut
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

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

Discussions similaires

  1. Le fichier bin ne peut pas lire le fichier *.xrc
    Par mess-mate dans le forum wxWidgets
    Réponses: 2
    Dernier message: 13/10/2008, 14h53
  2. lire un Fichier .Bin
    Par amazircool dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 21/03/2007, 15h09
  3. Lire et écrire dans un fichier bin!
    Par poche dans le forum C
    Réponses: 9
    Dernier message: 12/03/2007, 12h42
  4. Lire un fichier bin et cue
    Par calfater dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 18/06/2004, 14h43
  5. Lire le fichier du port série
    Par saibe dans le forum Linux
    Réponses: 7
    Dernier message: 09/04/2003, 09h29

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