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 -
lemarseillais_13 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Lecture fichier binaire et découpage en C
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
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
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
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?
Avant de programmer cela, tu dois comprendre comment faire.
Comment ferais-tu avec une feuille et un bic?
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
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!