Lecture fichier binaire et découpage en C

Résolu
lemarseillais_13 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
lemarseillais_13 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   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 23541 Date d'inscription   Statut Contributeur Dernière intervention   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 9 Date d'inscription   Statut Membre Dernière intervention  
 
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 706 Date d'inscription   Statut Membre Dernière intervention   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 9 Date d'inscription   Statut Membre Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
peux-tu alors marquer la discussion comme résolue?
0