CLASSE READ/WRITE BIT À BIT DANS UN FICHIER À N'IMPORTE QUELLE POSITION DU BIT

cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 - 10 juin 2007 à 08:55
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010 - 10 juin 2007 à 09:55
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43056-classe-read-write-bit-a-bit-dans-un-fichier-a-n-importe-quelle-position-du-bit

cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
10 juin 2007 à 09:55
Pour répondre à Willi :

-On écrase si on ne se trouve pas à la fin du fichier sinon on écrit puis il n'y a rien à remplacer. Par exemple :
11100001 on insére 101 à la position 3 et on obtient 11110101. Si la fin du fichier est atteinte il y a juste à écrire à la suite.

Cas particulier :
On commence à 0 au lieu de 4 car il n'est pas question d'insérer des 0 entre la fin du fichier et la position demandée. Cela fausserait les valeurs stockées.


Enfin pourquoi 10110000 et pas 00001011. Car les bits que l'on écrit ne sont pas des octets mais des bits donc on commence à écrire à la position la plus faible. On ne parle plus d'octets dans cette classe. Ensuite on pourra écrire en 4ème position la suite (si l'on se trouve dans une boucle) 10110101.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
10 juin 2007 à 09:42
Ca ne serait pas mieux d'utiliser une structure de champ de bits sérialisable de façon classique ? Comme ça tu aurais à la fois les fonctions classiques de sérialisation de .Net et quand même l'accès à chaque bit. Lorsque je relis ta phrase "Comme je travaille en ce moment sur les algorithmes de programmation, il m'a été fastidieux de perdre mon temps à mettre en place des systèmes complexes qui m'ont finalement brouillé. D'où l'idée de créer cette classe", je n'en retire strictement aucun argument, pas le moindre bit d'information quand à la nécessité qu'il y aurait d'accéder à chaque bit, tu devrais expliciter un peu. Par exemple, si tu veux manipuler les couleurs de pixel, les champs de bits te permettent d'accéder, au choix, à chaque composante RVB indépendamment, ou bien au code couleur directement.
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
10 juin 2007 à 08:55
"Ainsi on peut insérer la valeur 10100 à partir de la position 15 sans modifier les bits précédents ou suivants. Les bits écrit remplacent ceux déjà présent où rajoute si l'on se trouve à la fin du flux."
=> Alors on écrase ou pas ? c'est ambigüe ton explication :)

Cas particuliers :

-Si le fichier est vide est que vous positionner le pointeur à 4, la lecture commencera à 0 quand même.
=>Pourquoi ne pas insérer 4 octets à 0 ou une autre valeur par exemple un espace (choix de l'utilisateur) ?
-Si le nombre de bits inférieur à 8 est à écrire : bits à ecrire en fin de flux pour terminer : 1011, écrit : 10110000
=>Pourquoi 1011 devient 10110000 et pas plutot 00001011 ? Pour moi 1011 correspond à 0000 1011.

++
Rejoignez-nous