Code crc16 du C au java (aide)

Résolu
Signaler
Messages postés
10
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
23 mai 2012
-
Messages postés
10
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
23 mai 2012
-
Bonjour,
J'essaie d'interpréter un code en c au java. Mais il me demande de changer ma condition "if ( carry )" en booléen en java et je ne sais pas comment résoudre ce problème.

voici le code en C et mon interprétation en java.
Merci d'avance pour votre aide!

alex


include <stdio.h>
#include <stdlib.h>
//#include 

void main()
{
int Poly = 0x8408;
int lg = 9;
unsigned int Frame [] = {0x0B,0x20,0x0B,0x19,0x10,0x30,0x05,0x27,0x01};
unsigned int Crc;
int j, i_bits,carry;

Crc=0;
for (j=0 ; j<lg; j++)
{
    Crc = Crc ^ Frame[j];

    for ( i_bits=0 ; i_bits < lg-1 ; i_bits++ )
    {
        carry = Crc & 1;
        Crc = Crc / 2;
        if ( carry )
        {
            Crc = Crc ^ Poly;
        }
    }
}
printf ( "CRC = %x",Crc);
}

public class CRC16 { 
    public static void main(String[] args) { 
          
        long Poly = 0x8408;
        int lg=9;
        long Frame [] = {0x0B,0x20,0x0B,0x19,0x10,0x30,0x05,0x27,0x01};
        long Crc; 
        long carry;
        
        Crc=0;
        for (int j=0;j<lg;j++) {
           Crc=Crc^Frame[j];  
           for (int i_bits=0 ; i_bits < lg-1 ; i_bits++ )
           {
               carry = Crc & 1;
               Crc = Crc / 2;
               if ( carry )
               {
                   Crc = Crc ^ Poly;
               }
           }
        }
        System.out.println("CRC = " + Crc);
    }
}
A voir également:

2 réponses

Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
Salut,

Contrairement au C en java il n'y a que les boolean qui peuvent s’écrire de manière simplifié.
Pour tout autre type (Object inclue) tu dois préciser l’égalité.
Dans ton cas tu peux soit changer le if(carry) en if(carry != 0)
soit changer le type de carry en boolean et du coup changer l'affectation
boolean carry;
...
carry = (Crc & 1) != 0;
...
if ( carry )
...




------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
10
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
23 mai 2012

Merci pour tes explications claires et plusieurs exemples de solution ça fait plaisir!