Lecture fichier binaire et découpage en C

Résolu/Fermé
lemarseillais_13 Messages postés 9 Date d'inscription mercredi 16 décembre 2020 Statut Membre Dernière intervention 4 décembre 2021 - 26 nov. 2021 à 23:05
lemarseillais_13 Messages postés 9 Date d'inscription mercredi 16 décembre 2020 Statut Membre Dernière intervention 4 décembre 2021 - 4 déc. 2021 à 15:19
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 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
27 nov. 2021 à 09:29
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 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
27 nov. 2021 à 09:32
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 mercredi 16 décembre 2020 Statut Membre Dernière intervention 4 décembre 2021
4 déc. 2021 à 15:19
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 dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
27 nov. 2021 à 11:53
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 mercredi 16 décembre 2020 Statut Membre Dernière intervention 4 décembre 2021
28 nov. 2021 à 18:59
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 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
28 nov. 2021 à 20:37
peux-tu alors marquer la discussion comme résolue?
0