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 :

Conversion de binaire à hexadécimal


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 92
    Par défaut Conversion de binaire à hexadécimal
    Bonjour,
    Je souhaite :
    Lire et convertir un fichier binaire --> en hexadécimal.
    Lire et convertir un fichier hexadécimal --< en binaire.

    Y a-t-il des scripts C qui font celà ?
    J'ai essayé quelques programmes sans succès.

    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Par défaut
    Bonjour,

    Soit t'es sous Windows et il y a HexEdit, soit t'es sous Linux et il y a une commande hexedit <fichier>.

    Sinon, en C (Bin -> Hexa):
    1. Ouvrir ton fichier en mode binaire.
    2. Lire octet par octet.
    3. Afficher l'octet en hexa : printf("%.2Xh", octetLu) ;
    4. Recommencer l'opération en 2 jusqu'à la fin du fichier.
    5. Fermer ton fichier
    (Hexa -> Bin):
    1. Ouvrir ton fichier en mode texte.
    2. Lire deux caractères.
    3. Convertir les deux caractères en binaire sscanf(deuxChar, "%2X", &valeurBin) ;
    4. Afficher la valeur binaire : printf("%d", valeurBin) ;
    5. Recommencer l'opération en 2 jusqu'à la fin du fichier.
    6. Fermer ton fichier
    Si tu n'es pas précis sur ton problème en C, la réponse risque d'être aussi floue que la question.

    Bonne journée

  3. #3
    Membre éprouvé
    Inscrit en
    Juin 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 91
    Par défaut
    Bonjour,

    Citation Envoyé par mlaiti Voir le message
    Je souhaite :
    Lire et convertir un fichier binaire --> en hexadécimal.
    Lire et convertir un fichier hexadécimal --< en binaire.

    Y a-t-il des scripts C qui font celà ?
    J'ai essayé quelques programmes sans succès.
    On ne parle pas de script C mais de code source C.

    Pour synthétiser ce qui est demandé :
    Dans le fichier "binaire" on trouvera des caractères ASCII '0' et '1' qu'on convertira en '0','1',...,'A',...,'F' suivant les nombres qu'ils représentent ?!

    Dans le fichier "hexa" on trouvera les caractères ASCII '0','1','2',...,'A'...'F' qu'on convertira en '0' et '1' suivants les nombres qu'ils représentent ?!

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Citation Envoyé par mlaiti Voir le message
    Bonjour,
    Je souhaite :
    Lire et convertir un fichier binaire --> en hexadécimal.
    Lire et convertir un fichier hexadécimal --< en binaire.

    Y a-t-il des scripts C qui font celà ?
    J'ai essayé quelques programmes sans succès.

    Merci d'avance.
    Salut

    En l'état, on ne pourra pas répondre à ta question, car tu manques de clarté.
    Qu'est-ce que tu appelles un "fichier binaire" et "fichier hexadécimal" ? Ta question, écrite comme cela, ne veut pas dire grand chose. Est-ce qu'il y a des données texte représentant des nombres ? Autre ?

    Sois plus précis.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 92
    Par défaut
    Bonjour,
    Merci pour vos réponses.
    Effectivement, c'étai vague. Je fais faire plus simple.


    Mon but est de lire deux caractères par deux caractères d'un fichier, de les convertir en un binaire et enfin de les écrire en BINAIRE dans un fichier de sortie. ( pourquoi 2 caractères par 2 caractères : parce que c'est un fichier hexadecimal, donc pour avoir un OCTET, il faut deux HEXA)

    Exemple :
    var_hexa="2a" --> var_bin="00101010" (= 1 octet)
    Jusque là ça va.
    Mais, là où je bloque :
    comment écrire en mode binaire "00101010" dans un fichier de sortie ?
    càd, que "00101010" soit considéré comme un seul octet et écrit en binaire dans le fichier de sortie. ( et non pas comme 8 caractères).


    Merci beaucoup pour votre réponse.

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Ouvre le fichier de sortie en mode écriture binaire et écrit tes données var_bin par fputc()

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 92
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <stdio.h>
    #include <stdlib.h>
    int main(int argc, char *argv[])
    {
    FILE *out_bin=fopen(argv[1],"wb");
    char *var_bin="00101010";
    fwrite(var_bin,sizeof(var_bin),1,out_bin);
    fclose(out_bin);
    }
    #cc -o copier copier.c
    #./copier ex.bin
    #cat ex.bin
    00101010

    donc, ça marche pas !
    Ou me suis trompée. J'avoue que je ne suis pas habituée à fwrite.

  8. #8
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Dans ton message précédent, tu dis :
    var_hexa="2a" --> var_bin="00101010" (= 1 octet)
    en précisant bien que tu transformes deux caractères hexa en un octet.
    et maintenant tu testes avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *var_bin="00101010";
    var_bin ne fait pas un octet et le codage binaire est sous la forme d'une chaine de caractères !
    Si tu veux tester, tu devrais avoir l'équivalent de

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

Discussions similaires

  1. conversion nombre binaire -> decimal
    Par spoun95 dans le forum Langage
    Réponses: 7
    Dernier message: 25/11/2005, 17h46
  2. [Binaire] Conversion decimal -> binaire sans vecteur
    Par yann1979 dans le forum Langage
    Réponses: 1
    Dernier message: 26/10/2005, 16h10
  3. Conversion Texte en Hexadécimal (char*)
    Par kilowat dans le forum C++
    Réponses: 6
    Dernier message: 11/06/2005, 13h40
  4. conversion hexa-binaire
    Par jack69 dans le forum C
    Réponses: 8
    Dernier message: 04/04/2005, 16h33
  5. conversion ip (binaire - decimale)
    Par slim dans le forum Développement
    Réponses: 5
    Dernier message: 13/08/2004, 15h22

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