Lecture fichier binaire et découpage en C

Résolu
lemarseillais_13 Messages postés 10 Statut Membre -  
lemarseillais_13 Messages postés 10 Statut Membre -
Bonjour,



Bonjour,

Je n'arrive pas a decouper un fichier ecrit en binaire en regroupement de 8 chiffres exemple : 01101011010101010101000001 en "01101011" ... j'ai donc un fichier ne contenant que des 0 et des 1 à la suite et je souhaite lire en code ascii le message en fonction des ces octets. L'idéal serait d'écrire en code ascii dans un programme ou de l'afficher quand on lance le programme
J'ai essayé ça par exemple (cf image)
A voir également:

4 réponses

yg_be Messages postés 24281 Statut Contributeur Ambassadeur 1 584
 
bonjour,
que se passe-t-il quand tu fais printf?

merci de partager du texte, et pas des images.
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
yg_be Messages postés 24281 Statut Contributeur Ambassadeur 1 584
 
Veux-tu transformer "01101011" en le caractère ayant le code ASCII correspondant?

Avant de programmer cela, tu dois comprendre comment faire.
Comment ferais-tu avec une feuille et un bic?
0
lemarseillais_13 Messages postés 10 Statut Membre
 
Pour cela je calculerai en décimal "01101011" puis je le cherche dans la tablea ascii ici :
binaire : 01101011 --> 2^0 + 2^1 + 2^3 + 2 ^5 + 2^6 = 107
0
Dalfab Messages postés 720 Statut Membre 101
 
Bonjour,

Il te faut:
a) extraire les données de ton fichier d'entrée
b) tu obtiens une chaine
c) convertir la chaine en un nombre, c'est le code ASCII
d) convertir le code ASCII en un caractère
e) écrire le caractère dans le fichier de sortie

Les étapes (a) et (b) sont selon moi les plus difficiles, tu les as faites.
L'étape (c) te manque
L'étape (d) est de loin la plus simple. Car en C, le code ASCII et le caractère sont en fait la même chose.

Il te manquerait donc : Comment à partir d'une chaîne composée de caractères '0' et '1' retrouver le nombre qui lui correspond?
Si ta chaine ne contenait qu'un seul caractère, la règle serait simple:
- si c'est le caractère '0', le nombre est 0.
- si c'est le caractère '1', le nombre est 1.
- si c'est un autre caractère, le fichier n'a pas le type de données attendue.
Mais ici, il y a 8 caractères. A quoi correspond alors le premier caractère, le second caractère...? C'est là qu'essayer de l'écrire sur une feuille t'aidera..

PS: il existe une fonction qui sait faire cela. Je pense que c'est un exercice et que tu n'as pas le droit d'utiliser des fonctions non apprises. Sinon tu pourrais utiliser
 int  le_code_ascii = strtol( la_chaine, NULL, 2 ); 
qui ferait le boulot pour toi!
0
lemarseillais_13 Messages postés 10 Statut Membre
 
Parfait j'ai le droit d'utiliser la fonction strtol... du coup tout fonctionne bien, merci,
Bonne soirée
0
yg_be Messages postés 24281 Statut Contributeur 1 584
 
peux-tu alors marquer la discussion comme résolue?
0