je ne sais pas si cela intéressera quelqu'un mais je poste ici un code vba pour calculer le crc d'un binaire en fonction d un polynôme donné en binaire lui aussi
nous avons d un coté notre binaire ( ex : 1001001101)
et le polynôme de contrôle (ex : g(x)=x^5+x^3+x^2+1)
on traduit le polynome en binaire en fonction des puissances
101101 (=> 1.x^5 ; 0.x^4 ; 1.x^3 ; 1.x^2 ; 0.x^1 ; 1.x^0)
création du crc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Function crc(nbr As String, polynome As String) As String Dim check As String Dim traitement As String Dim traiter As String check = nbr For i = 1 To Len(polynome) - 1 nbr = nbr & 0 Next Do While Len(nbr) > Len(polynome) Do While Left(nbr, 1) = 0 nbr = Right(nbr, Len(nbr) - 1) Loop traitement = Left(nbr, Len(polynome)) nbr = Right(nbr, Len(nbr) - Len(polynome)) traiter = "" For j = 1 To Len(polynome) traiter = traiter & (Mid(traitement, j, 1) Xor Mid(polynome, j, 1)) Next nbr = traiter & nbr Loop crc = check & Right(nbr, Len(polynome) - 1) End Function
et ensuite la fonction verifcrc qui vérifie le binaire et son crc concaténer avec le même polynôme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 Function verifcrc(nbr As String, polynome As String) As String Dim traitement As String Dim traiter As String Do While Len(nbr) > Len(polynome) Do While Left(nbr, 1) = 0 nbr = Right(nbr, Len(nbr) - 1) Loop traitement = Left(nbr, Len(polynome)) nbr = Right(nbr, Len(nbr) - Len(polynome)) traiter = "" For j = 1 To Len(polynome) traiter = traiter & (Mid(traitement, j, 1) Xor Mid(polynome, j, 1)) Next nbr = traiter & nbr Loop verifcrc = Right(nbr, Len(polynome) - 1) traiter = "" For j = 1 To Len(polynome) - 1 traiter = traiter & 0 Next If verifcrc = traiter Then verifcrc = "valide" Else verifcrc = "corrompu" End If End Function
Partager