Lecture du bit de poids faible dans un fichier bmp
lemarseillais_13
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je dois dans un fichier bmp regarder chaque octet après le 54 ième( je commence à lire dans mon fichier à partir de l'octet 54, on enleve l'entète) je doit selectionner le bit de poid faible de chaque octet et le mettre dans un fichier.
Pour cela j'utilise fseek pour me déplacer à l'octet 54, puis j'utilise fgetc(de fichier.bmp) qui vas me donner chaque caractère donc ici des octets puis je souhaite prendre le bit de poids faible de chaque octet et le mettre dans un fichier(exemple : 01011001 10000000 deux octets je souhaite mettre dans un fichier les 2 derniers bits de chaque octets : 10) es ce que quelqu'un aurait une idée svp ?
Je dois dans un fichier bmp regarder chaque octet après le 54 ième( je commence à lire dans mon fichier à partir de l'octet 54, on enleve l'entète) je doit selectionner le bit de poid faible de chaque octet et le mettre dans un fichier.
Pour cela j'utilise fseek pour me déplacer à l'octet 54, puis j'utilise fgetc(de fichier.bmp) qui vas me donner chaque caractère donc ici des octets puis je souhaite prendre le bit de poids faible de chaque octet et le mettre dans un fichier(exemple : 01011001 10000000 deux octets je souhaite mettre dans un fichier les 2 derniers bits de chaque octets : 10) es ce que quelqu'un aurait une idée svp ?
fseek(fichier,54,SEEK_SET); int buffer=0; while ((buffer=fgetc(fichier))!= EOF){ //fichier: mon fichier bmp que je lis //printf("%c",buffer); fprintf(fichierBit , "%c", buffer); //fichierbit le fichier dans lequel je souhaite écrire les bits de poids faible de chaque octet } fclose (fichier);
A voir également:
- Lecture du bit de poids faible dans un fichier bmp
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Winrar 64 bit - Télécharger - Compression & Décompression
- Fichier rar - Guide
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
pour réaliser cela, j'utiliserais des opérateurs de ces catégories:
https://forums.commentcamarche.net/forum/affich-37622077-langage-c-les-operateurs#les-operateurs-bit-a-bit
https://forums.commentcamarche.net/forum/affich-37622077-langage-c-les-operateurs#les-operateurs-de-decalage-de-bit
pour réaliser cela, j'utiliserais des opérateurs de ces catégories:
https://forums.commentcamarche.net/forum/affich-37622077-langage-c-les-operateurs#les-operateurs-bit-a-bit
https://forums.commentcamarche.net/forum/affich-37622077-langage-c-les-operateurs#les-operateurs-de-decalage-de-bit
Bonjour,
Tu n'indiques pas ce que tu attends dans le fichier destination. Deux bits ça n'est pas un format. La destination devrait recevoir du texte ou des octets.
Un exemple où les 2 bits deviennent les textes "00", "01", "10" ou "11":
Tu n'indiques pas ce que tu attends dans le fichier destination. Deux bits ça n'est pas un format. La destination devrait recevoir du texte ou des octets.
Un exemple où les 2 bits deviennent les textes "00", "01", "10" ou "11":
while ( ( buffer = fgetc( fichier ) ) != EOF ) { static const char* const cnv[] = { "00", "01", "10", "11"}; fprintf( fichierBit , "%s", cnv[buffer&3] ); }
Salut à tous,
yg_be a donné tous les éléments de réponse. Avec un masque adéquat, on peut utiliser & pour extraire un ou plusieurs bits et | pour appliquer un ou plusieurs bits. Le décalage vers la gauche pourra être utilisé pour simplifier l'écriture des bits en écrivant sur celui de poids faible et en décalant de une position pour laisser la place au bit suivant traité.
J'ajouterai qu'il te faudra traiter 8 char pour récupérer 8 bits et reconstituer un char avant de penser à écrire dans le fichier.
Aussi, on peut remarquer que si c'est le bit de poids faible qui intéresse lemarseillais_13 il peut aussi déterminer si le chiffre est pair ou impair.
S'il est pair ce bit sera à 0, si impair il sera à 1.
Si c'est un exercice, il est cependant probable que le PO doive montrer qu'il sait utiliser les opérateurs bit à bit :-)
Dal
yg_be a donné tous les éléments de réponse. Avec un masque adéquat, on peut utiliser & pour extraire un ou plusieurs bits et | pour appliquer un ou plusieurs bits. Le décalage vers la gauche pourra être utilisé pour simplifier l'écriture des bits en écrivant sur celui de poids faible et en décalant de une position pour laisser la place au bit suivant traité.
J'ajouterai qu'il te faudra traiter 8 char pour récupérer 8 bits et reconstituer un char avant de penser à écrire dans le fichier.
Aussi, on peut remarquer que si c'est le bit de poids faible qui intéresse lemarseillais_13 il peut aussi déterminer si le chiffre est pair ou impair.
S'il est pair ce bit sera à 0, si impair il sera à 1.
Si c'est un exercice, il est cependant probable que le PO doive montrer qu'il sait utiliser les opérateurs bit à bit :-)
Dal