begin process at 2012 02 16 11:27:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

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

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


 Information sur la source

Note :
Aucune note
Catégorie :Fichier / Disque Source .NET ( DotNet ) Classé sous :bit, bits, ecrire, lire, classe Niveau :Expert Date de création :09/06/2007 Date de mise à jour :10/06/2007 10:09:34 Vu / téléchargé :8 410 / 312

Auteur : yvesyves

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note


 Description

Introduction de la source :

Quand on programme en .NET il existe une classe IO.FileStream qui permet à partir d'un flux d'écrire ou de lire des tableaux d'octets. L'inconvénient pour moi est justement de lire les octets seulement: on se trouve très vite limité. 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.

Présentation de la classe :

Cette classe fonctionne quasiment comme la classe mentionée precédemment. Elle agit au niveau des bits. Ainsi on écrit dans le fichier non plus avec un tableau d'octet mais avec un tableau de bits (je précise que le bit est stocké dans un octet sous la valeur 1 ou 0 car l'octet est la plus petite information admise pour un ordinateur). Les exemples seront plus parlants.

Nous avons les octets dans un fichier quelconque :

11110001 10101110 01101000 00010100     octets

   1        2        3        4         Position dans un flux de la classe .NET

12345678 9...         Position dans un flux de ma classe

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 ou rajoute si l'on se trouve à la fin du flux. La lecture fonctionne de la même façon.

Implémentation :

Ceci est un exemple de copie d'un fichier. Ceci ne sert à rien, la classe de .NET est beaucoup plus performante car elle évite les calculs pour le même résultat. Ce code a pour but de montrer comment utiliser la classe. Son utilisation est destinée essentiellement pour
les algos de compression, de cryptage ou autres manipulations.

    Dim StreamIn As New IO.FileStream("c:\1.jpg", IO.FileMode.Open, IO.FileAccess.ReadWrite)
        Dim StreamOut As New IO.FileStream("c:\2.jpg", IO.FileMode.Create, IO.FileAccess.ReadWrite)

        Dim BitStreamIn As New ClassBit(StreamIn)
        Dim BitStreamout As New ClassBit(StreamOut)

        Dim Tblbits(1023) As Byte
        Do While Tblbits.Length = 1024
            BitStreamIn.ReadBits(Tblbits, 0, 1024)
            BitStreamout.WriteBits(Tblbits, 0, Tblbits.Length)
        Loop


        StreamIn.Close()
        StreamOut.Close()
        BitStreamIn.Close()
        BitStreamout.Close()



Les seules différences avec la classe de .net réside dans le fait que ReadBits ne retourne pas de valeur Integer
qui est censé indiqué le nombre max d'octets lus. Dans ma classe c'est TblBits qui peu changer de longueur, ici en
fin de fichier TblBits.Length peut passer de 1024 à 32 par exemple. Enfin le flux créer avec l'instance New demande
un Flux Io.FileStream avec les valeurs ReadWrite quoique qu'il arrive.

Cas particuliers :

-Si le fichier est vide est que vous positionner le pointeur à 4, la lecture commencera à 0 quand même.
-Si le nombre de bits inférieur à 8 est à écrire : bits à ecrire en fin de flux pour terminer : 1011, écrit : 10110000
-Voir le code des propriétés (exemple Position>Length implique Position = Length).

Plus :

La classe contient d'autres procédures permétant de transformer des valeurs décimales en binaires ou inversement et BytesToBits/BitsToBytes.

Note :

J'éspère que cette classe fera le bonheur de certain et j'attend de vous non pas des critiques que l'on trouve habituellement "c'est beau","ca marche pas", "ca sert à rien" mais des critiques plus constructives si mon code vous pose un problème. Merci








 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

09 juin 2007 21:27:46 :
Mauvais copier coller de la description
09 juin 2007 21:29:35 :
idem
09 juin 2007 21:32:59 :
idem j'ai un petit soucis ^^
09 juin 2007 21:34:39 :
Bon allé j'arrete!!
09 juin 2007 21:50:03 :
Je passe plus de temps à enlever des caractères qui n'ont pas sa place dans la descrition à programmer
09 juin 2007 21:51:42 :
Ptet que je vais y arriver
10 juin 2007 10:09:34 :
où en ou ce qui faussait l'expliquation

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) SERVEUR HTTP (FICHIERS/WEB) PARTAGEZ VOS FICHIERS
Source avec Zip Source avec une capture Source .NET (Dotnet) TRANSFERT DE FICHIERS ENTRE 2 PC DISTANTS
Source avec Zip Source avec une capture Source .NET (Dotnet) INCLURE POCHETTE D'ALBUM / JAQUETTE DANS VOS TAG MP3 - EDITI...
Source avec Zip Source avec une capture Source .NET (Dotnet) REDIMENSIONNEMENT DE PHOTOS PAR LOT
Source avec Zip Source avec une capture Source .NET (Dotnet) .NET ALGO HUFFMAN RLE MTF

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) MODIFIER LES EXTENSION DES FICHIERS par okosa
ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH... par kerisolde
Source avec Zip Source avec une capture FILE,SECURITY,FICHIER par okosa
Source avec Zip Source avec une capture Source .NET (Dotnet) PATCHEUR DE FICHIER par tototh
Source avec Zip Source avec une capture LECTURE DES INFORMATIONS DES DISQUES COMPOSANT UN ENSEMBLE R... par jack

 Sources en rapport avec celle ci

Source .NET (Dotnet) CONVERTIR UN OCTET EN 8 BITS (10011101) BYTESTOBITS par yvesyves
Source avec Zip CLASSE BASIQUE XML par khazee
LIRE / ECRIRE par Sloft
ACCÈS COMPLET À LA BASE DE REGISTRE par cOllO
LIRE/ECRIRE DANS DES CHAMPS BINAIRES par FlyKiller

Commentaires et avis

Commentaire de Willi le 10/06/2007 08:55:48 administrateur CS

"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.

++

Commentaire de Patrice99 le 10/06/2007 09:42:55

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.

Commentaire de yvesyves le 10/06/2007 09:55:35

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.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

lire et ecrire un bit sur une disquette [ par armine2 ] voici ma questiondans un batch quelle est la ligne de commande pour reussir a ecrire et lire un bit spécifique sur une disquette??Merci de me rep Ecrire/Lire DLL sous VB.Net [ par OneHacker ] Salut, je voudrais pouvoir créer une DLL sous laquelle serait plaé des fonctions de correction de texte et pouvoir le lire depuis mon p Lire et ecrire dans un fichier excel [ par nostra78 ] Je veux avoir accès à un fichier excel : sans l'ouvrir "qu'il soit workbook"Je voudrais un truc du genreApp = "chemin/fichierexcel"Dim TextL Lire et ecrire dans fichier de type excel [ par Elief ] Salut a tous J'ai parcouru le forum et je n'est pas trouver comment lire et ecrire dans un fichier excel, il y a bien sur de nombreuse reponse a ce su Lire et ecrire dans fichier de type excel [ par Elief ] Salut a tous, J'ai parcouru en long en large et en travers ce forum mais je n'est pas trouver de reponse a cette question: comment lire et ecrire dans Impossible de lire la propriété VLookup de la classe WorksheetFunction [ par Sp00ky ] Bonjour à tous et à toutes.Je désire faire une recherche dans mon classeur Excel, cependant, lorsque j'exécute mon programme :"Imp [VB.NET] Ecrire et Lire sur le port paralle en bas niveau ET Apel de fonction ecrite en C a partir de VB.NET [ par Ulmo ] Est ce que quelqu'un sait comment ecrire et lire sur le port parallele en VB.NET ? J'ai deja regardé dans les messages du forum, j'ai trouvé A l'aiiiide svp comment ecrire ou lire a des lignes précises dans un fichier avec VB.net au bord du suicide :-( [ par toxjamescook ] bonjourj'ai pu voir bcp de source sur ce forum qui permette de lire ou d'ecrire sur un fichier .txt mais il commence tous a la premiere ligne .comment base de donnée ????? [ par jbbordas87 ] bonjours a tous, j'ai besoin d'un petit renseignement: mon future programms doit etre capable de lire, ecrire, et verifier un base de donner access. M Lire [ par tomk_41 ] Bonjour tout le monde, Je suis sur un petit problème depuis quelques heures et je dois dire que je vais finir par m'arracher les cheveux. Je cherche


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales