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.
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.
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):(Hexa -> Bin):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 fichierSi tu n'es pas précis sur ton problème en C, la réponse risque d'être aussi floue que la question.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
Bonne journée
Bonjour,
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 ?!
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.
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.
Ouvre le fichier de sortie en mode écriture binaire et écrit tes données var_bin par fputc()
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.
Dans ton message précédent, tu dis :
en précisant bien que tu transformes deux caractères hexa en un octet.var_hexa="2a" --> var_bin="00101010" (= 1 octet)
et maintenant tu testes avec :
var_bin ne fait pas un octet et le codage binaire est sous la forme d'une chaine de caractères !
Code : Sélectionner tout - Visualiser dans une fenêtre à part char *var_bin="00101010";
Si tu veux tester, tu devrais avoir l'équivalent de
Code : Sélectionner tout - Visualiser dans une fenêtre à part var_bin = 0x2a;
Partager