Bonjour tout le monde,
je souhaiterais implémenter le CRC(Cyclic Redundancy Check) en java dans le cadre d'un projet sur la transmission d'informations entre deux ports séries. seulement voilà, j'ai essayé de convertir chaque caractère de la chaine que je souhaite envoyer en entier (son caractère ascii) puis partant de là, j'ai utilisé la fonction Integer.toBinaryString. ceci me permet juste d'avoir la suite binaire correspondant au caractère concerné. maintenant j'ai choisi une chaîne binaire correspondant au polynôme générateur. j'ai compté le nombre de caractères de ce polynome et j'ai ajouté le nombre de zéros (correspondant au degré du polynome) à l'information.
Maintenant, je cherche à effectuer la division binaire entre le nouvelle information(info+ les zéros ajoutés précédemment) mais le problème c'est que les deux entités sont des Strings et non des binaires en réalité... donc je ne peux pas y effectuer de division. je ne sais pas si c'est mon raisonnement qui est totalement faussé, ou bien s'il est possible de continuer dans la même direction en jonglant avec les Strings et si oui de quelle manière?
Ci-dessous, vous trouverez le code correspondant à ce ke je vous ai décrit ci dessus:
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
37
38
39 import java.util.Vector; public class Transfo { public static void main(String[] args) { String ma=new String("Bonjour");//information à envoyer String gen=new String("101011");//polynome générateur String chainetosend=new String(); int taillegen=gen.length(); int taille=ma.length(); int []tab=new int[taille]; String []code=new String[gen.length()+taille-1]; for (int i=0;i<ma.length();i++){ tab[i]=ma.charAt(i); System.out.print(tab[i]+"="); if (((Integer.toBinaryString(tab[i])).length()<8)){ System.out.println("0"+Integer.toBinaryString(tab[i])); } else { System.out.println(Integer.toBinaryString(tab[i])); } } for (int i=0;i<ma.length();i++){ code[i]=Integer.toBinaryString(tab[i]); } for (int i=ma.length();i<gen.length()+taille-1;i++){ code[i]="0"; } for (int i=0;i<gen.length()+taille-1;i++){ chainetosend+=code[i]; } System.out.println(chainetosend);//chaine concaténée avec les zéros } }
Je vous remercie à l'avance pour toutes les critiques et les suggestions qui m'aideront à avancer dans ce projet
Partager