Lire un fichier binaire bit par bit

cs_MrDimanche Messages postés 16 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 16 avril 2008 - 25 juil. 2007 à 14:38
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 26 juil. 2007 à 13:08
Bonjour,
Voila mon problème :
j'ai un fichier binaire à lire, et j'utilise un "ifstream" puit get... Ca marche très bien, mais ça lit les données octets par octets, que je met en hexa, j'obtiens alors un truc du genre 'f8    56    4c    0'. Dans certain cas j'aurais besoin de lire bit par bits. Fait, je souhaiterai savoir s'il existe une fonction pour lire bit par bit, ou même pour extraire d'un int la valeur binaire. Merci

3 réponses

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
25 juil. 2007 à 14:50
La plus petite valeur adressable est l'octet (8 bits).
Un 'int' EST une valeur binaire.

ciao...
BruNews, MVP VC++
1
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
25 juil. 2007 à 14:58
1. On ne lit pas un fichier octet par octet et encore moins bit par bit (si c'était fesable). On extrait le fichier au complet dans un buffer puis on le parcoure avec un pointeur ou on lit par bloc de quelque ko voir mo.

2. On n'extrait pas une valeur binaire d'un int tout simplement parce qu'un int est déjà en binaire tout comme un char, un long etc. Si tu veux tester un bit, on utilise les opérateurs binaires &(AND) |(OR) ^(XOR) et autre. Par exemple, pour tester le premier bit d'un char:

if(valeur & 1) printf("Le premier bit de valeur est non nul");

le 3ème bit

if(valeur & 4) printf("Le 3ème bit de valeur est non nul");

le 5ème

if(valeur & 16) printf("Le 5ème bit de valeur est non nul");

etc. etc.

Ceci dit, pour tout un fichier, ça risque de prendre un temps énorme même avec des pointeurs.

C++ (@++)
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
26 juil. 2007 à 13:08
Salut,

Y a les champs de bits qui peuvent peut être aussi t'améliorer un peu la lisibilité et la simplicité.

M'enfin méfiance avec ces trucs : ça peut faire du code très lent. Toujours essayer de bosser avec des structures de taille multiple de 8.
0