Lire et Écrire un fichier bit par bit

cs_virtual Messages postés 9 Date d'inscription dimanche 15 octobre 2000 Statut Membre Dernière intervention 31 août 2004 - 5 mai 2002 à 12:49
armine2 Messages postés 8 Date d'inscription lundi 4 avril 2005 Statut Membre Dernière intervention 10 juin 2005 - 29 mai 2005 à 15:10
Bonjour à tous

Quel qu'un pourait m'expliqué comment je peut arrivé à ceci :

lire un fichier bit par bit (0 ou 1), 7 bits à la fois , ajouter un bit de parité (donne toujours un nombre paire ) foutre ça dans un tableau afin d'écrire 8 fichier distinct avec un fichier de parité.

Ou toute autre technique qui me permetrait de stocker un fichier spliter à plusieur emplacement et qui me permetrait de le reconconstruire même avec le segment manquant un peu comme du raid. je sais que raid 5 le fais aux niveau des octets ou des secteur mais je sais pas comment il fait :-(

merci
si quel qu'un peu m'aider je vous ferez profité de mon travail via ce site
Virtual 8-)

3 réponses

TFlorian Messages postés 194 Date d'inscription dimanche 3 mars 2002 Statut Membre Dernière intervention 19 décembre 2005 3
6 mai 2002 à 00:21
Bonjour,

Voivi ce que je t'ais developer ...

(mais comme il est tard ;-) je me suis arreter !

si tu veux plus d'infos ou un coup de main recontacte moi ;-)

Voici le code :

Dim MyRecord As String
'bon je n'ais mais que 500 caractere pour commancer !
'une ligne du tableau==1 octet
Dim Tabeau_Binnaire(500, 7) As String
Open "c:\command.com" For Binary As #1
MyRecord = Input(LOF(1), #1)
Close #1 ' Ferme le fichier.

Debug.Print Asc(Left(MyRecord, 1))

'recupere la valeur hexa
nombre = Hex(Asc(Left(MyRecord, 1)))

Debug.Print nombre

'isole une premirer partie de la valeur pour commancer ...
'et stoque la dans le debut du tableau binaire ...
'sous la forme texte 0 ou 1

'si tu a mieux pour la convertion (c'est pas difficile )
'transmet le moi ;-)

Select Case LCase(Left(nombre, 1))
Case 0:
Tabeau_Binnaire(posi, 0) = "0"
Tabeau_Binnaire(posi, 1) = "0"
Tabeau_Binnaire(posi, 2) = "0"
Tabeau_Binnaire(posi, 3) = "0"

Case 1:
Tabeau_Binnaire(posi, 0) = "0"
Tabeau_Binnaire(posi, 1) = "0"
Tabeau_Binnaire(posi, 2) = "0"
Tabeau_Binnaire(posi, 3) = "1"

Case 2:
Tabeau_Binnaire(posi, 0) = "0"
Tabeau_Binnaire(posi, 1) = "0"
Tabeau_Binnaire(posi, 2) = "1"
Tabeau_Binnaire(posi, 3) = "0"

Case 3:
Tabeau_Binnaire(posi, 0) = "0"
Tabeau_Binnaire(posi, 1) = "0"
Tabeau_Binnaire(posi, 2) = "1"
Tabeau_Binnaire(posi, 3) = "1"

Case 4:
Tabeau_Binnaire(posi, 0) = "0"
Tabeau_Binnaire(posi, 1) = "1"
Tabeau_Binnaire(posi, 2) = "0"
Tabeau_Binnaire(posi, 3) = "0"

Case 5:
Tabeau_Binnaire(posi, 0) = "0"
Tabeau_Binnaire(posi, 1) = "1"
Tabeau_Binnaire(posi, 2) = "0"
Tabeau_Binnaire(posi, 3) = "1"

Case 6:
Tabeau_Binnaire(posi, 0) = "0"
Tabeau_Binnaire(posi, 1) = "1"
Tabeau_Binnaire(posi, 2) = "1"
Tabeau_Binnaire(posi, 3) = "0"

Case 7:
Tabeau_Binnaire(posi, 0) = "0"
Tabeau_Binnaire(posi, 1) = "1"
Tabeau_Binnaire(posi, 2) = "1"
Tabeau_Binnaire(posi, 3) = "1"

Case 8:
Tabeau_Binnaire(posi, 0) = "1"
Tabeau_Binnaire(posi, 1) = "0"
Tabeau_Binnaire(posi, 2) = "0"
Tabeau_Binnaire(posi, 3) = "0"

Case 9:
Tabeau_Binnaire(posi, 0) = "1"
Tabeau_Binnaire(posi, 1) = "0"
Tabeau_Binnaire(posi, 2) = "0"
Tabeau_Binnaire(posi, 3) = "1"

Case a:
Tabeau_Binnaire(posi, 0) = "1"
Tabeau_Binnaire(posi, 1) = "0"
Tabeau_Binnaire(posi, 2) = "1"
Tabeau_Binnaire(posi, 3) = "0"

Case b:
Tabeau_Binnaire(posi, 0) = "1"
Tabeau_Binnaire(posi, 1) = "0"
Tabeau_Binnaire(posi, 2) = "1"
Tabeau_Binnaire(posi, 3) = "1"

Case c:
Tabeau_Binnaire(posi, 0) = "1"
Tabeau_Binnaire(posi, 1) = "1"
Tabeau_Binnaire(posi, 2) = "0"
Tabeau_Binnaire(posi, 3) = "0"

Case d:
Tabeau_Binnaire(posi, 0) = "1"
Tabeau_Binnaire(posi, 1) = "1"
Tabeau_Binnaire(posi, 2) = "0"
Tabeau_Binnaire(posi, 3) = "1"

Case e:
Tabeau_Binnaire(posi, 0) = "1"
Tabeau_Binnaire(posi, 1) = "1"
Tabeau_Binnaire(posi, 2) = "1"
Tabeau_Binnaire(posi, 3) = "0"

Case f:
Tabeau_Binnaire(posi, 0) = "1"
Tabeau_Binnaire(posi, 1) = "1"
Tabeau_Binnaire(posi, 2) = "1"
Tabeau_Binnaire(posi, 3) = "1"

End Select

'Il faudrais maintenant fair de meme avec
'la partie right de monbre
'puis ce sur chaque caractere !
'enfin enregister le tableau dans des fichier differant
'(appres avoir recee le bit de parite evidement

Voila c'est un peut sauvage mais bon ....

c'est seulemant une partie de ce que je voulais fair mais ... pas le temp pour tout de suite ...

By

TFlorian.
0
cs_virtual Messages postés 9 Date d'inscription dimanche 15 octobre 2000 Statut Membre Dernière intervention 31 août 2004
6 mai 2002 à 02:55
merci ! d'avoir mit les main à la pâte (aux clavier )

Je t'envoie ce que j'ai pour le split (Si tu voit des erreurs ne te gêne pas) Maintenant je dois faire une fonction qui réécrire le fichier correctement à partir de 8 fichier reçus plus le fichier parité pour controler ou reconstruire

ps: remarque que j'utilise 9 fichiers plûtot que 8 bref ça n'a pas une sigrande importance pour moi entre 4 et 12 c'est Bon

+++++++++++++++++
Public Function SplitBits(SrcPath As String, CibPath As String)
Dim CurByte As Byte
Open SrcPath For Binary As 1
i = i + 1
Do While Not EOF(1)
Get #1, i, CurByte
b = Asc(CurByte)If b >128 Then bit1 1: b = b - 128 Else bit1 = 0If b >64 Then bit2 1: b = b - 64 Else bit2 = 0If b >32 Then bit3 1: b = b - 32 Else bit3 = 0If b >16 Then bit4 1: b = b - 16 Else bit4 = 0If b >8 Then bit5 1: b = b - 8 Else bit5 = 0If b >4 Then bit6 1: b = b - 4 Else bit6 = 0If b >2 Then bit7 1: b = b - 2 Else bit7 = 0If b >1 Then bit8 1 Else bit8 = 0
CalcuPari = bit1 + bit2 + bit3 + bit4 + bit5 + bit6 + bit7 + bit8
Select Case CalcuPari

Case 1, 3, 5, 7
PariBit = 1

Case 2, 4, 6, 8
PariBit = 0

Case 0
PariBit = 0

End Select
Dim Tab_Segment(1023, 8) As Byte
Tab_Segment((i - 1), 0) = PariBit
Tab_Segment((i - 1), 1) = bit1
Tab_Segment((i - 1), 2) = bit2
Tab_Segment((i - 1), 3) = bit3
Tab_Segment((i - 1), 4) = bit4
Tab_Segment((i - 1), 5) = bit5
Tab_Segment((i - 1), 6) = bit6
Tab_Segment((i - 1), 7) = bit7
Tab_Segment((i - 1), 8) = bit8
i = i + 1
If i = 1024 Then
'Sauvegarde des parties de ficher et/ou send par 9 socket

Else

End If
Loop
Close #1
End Function
+++++++++++++++++++++++
Pour des details sur project envoie moi une e-mail a virtual16@hotmail.com le source est public mais le project non ;-(
+++++++++++++++++++++++
0
armine2 Messages postés 8 Date d'inscription lundi 4 avril 2005 Statut Membre Dernière intervention 10 juin 2005
29 mai 2005 à 15:10
bonjour j'aimerais savoir a quel langage correspond ce code?
C'est important!merci d'ance! Armine
0
Rejoignez-nous