Bonjour tous le monde,
j ai un projet qui consiste a calculer le CRC d'une chaîne de caractère entrée par l'utilisateur. donc je vous explique le fonctionnement de mon programmes.
en premier, l'utilisateur fait entrer un message que le programme devrait le convertir en binaire, après il doit nous demander de faire entrer le polynôme générateur, ensuite il devra faire la division binaire et nous donner le CRC aupres de la suite binaire convertie ultérieurement. Donc, mon problème c'est que après conversion de la chaîne de caractère qui est en String je la convertie en tableau de String pour que je puisse la convertir en tableau d'entiers, mais syntaxiquement mon programme Eclipse ne détecte aucune erreur, mais lors de l’exécution, la c est autre chose il me donne que j ai une faute dans la conversion de du tableau String en Tableau d'entiers. Pour cela je mets a votre disposition mon code Java, espérant d'avoir une réponse ou bien une solution a mon problème, et Merci d'avance
public class Com {
public static void main(String[] args) throws IOException {
{
System.out.println("taper votre chaine");
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
String s = buff.readLine();
String binaire;
String[] result;
byte[] bytes = s.getBytes();
StringBuilder binary = new StringBuilder();
for (byte b : bytes) {
int val = b;
for (int i = 0; i < 8; i++) {
binary.append((val & 128) == 0 ? 0 : 1);
val <<= 1;
}
}
System.out.println(binary);
System.out.println("le nombre de bit est :" + binary.length());
binaire = binary.toString();
System.out.println(binaire);
binaire=binary.toString();
result=binaire.split(" ");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int[] data;
int[] div;
int[] divisor;
int[] rem;
int[] crc;
int divisor_bits, tot_length;
int data_bits=result.length;
data=new int[data_bits];
for(int i=0;i<data_bits;i++){
data[i]=Integer.parseInt(result[i]);//Voici ou l'erreur se pose
}
System.out.println("entre le nombre de bits a diviser : ");
divisor_bits=Integer.parseInt(br.readLine());
divisor=new int[divisor_bits];
System.out.println("entre la suite a diviser : ");
for(int i=0; i<divisor_bits; i++){
divisor[i]=Integer.parseInt(br.readLine());
}
tot_length=data_bits+divisor_bits-1;
div=new int[tot_length];
rem=new int[tot_length];
crc=new int[tot_length];
/*------------------ CRC GENERATION-----------------------*/
for(int i=0;i<data.length;i++)
div[i]=data[i];
for(int j=0; j<div.length; j++){
rem[j] = div[j];
}
rem=divide(div, divisor, rem);
for(int i=0;i<div.length;i++)
{
crc[i]=(div[i]^rem[i]);
}
System.out.println("CRC code : ");
for(int i=0;i<crc.length;i++)
System.out.print(crc[i]);}
}
static int[] divide(int div[],int divisor[], int rem[])
{
int cur=0;
while(true)
{
for(int i=0;i<divisor.length;i++)
rem[cur+i]=(rem[cur+i]^divisor[i]);
while(rem[cur]==0 && cur!=rem.length-1)
cur++;
if((rem.length-cur)<divisor.length)
break;
}
return rem;
}
}
Partager