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
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
A voir également:
- Lecture fichier binaire et découpage en C
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier host - Guide
- Ouvrir fichier .bin - Guide
4 réponses
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
Ambassadeur
1 557
27 nov. 2021 à 09:29
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
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
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
Ambassadeur
1 557
27 nov. 2021 à 09:32
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?
Avant de programmer cela, tu dois comprendre comment faire.
Comment ferais-tu avec une feuille et un bic?
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
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
binaire : 01101011 --> 2^0 + 2^1 + 2^3 + 2 ^5 + 2^6 = 107
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
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
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!
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
28 nov. 2021 à 18:59
Parfait j'ai le droit d'utiliser la fonction strtol... du coup tout fonctionne bien, merci,
Bonne soirée
Bonne soirée
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
28 nov. 2021 à 20:37
28 nov. 2021 à 20:37
peux-tu alors marquer la discussion comme résolue?