IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Traduire JAVA en C


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut Traduire JAVA en C
    Bonjour ç tous et à toutes ,



    Un Modérateur m'as conseillé un code écrit en JAVA et je souhaite le traduire en C tout simplement :

    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
    40
     
     
    // the precomputed values for all possible byte values
    private static long[] CRC64Table = new long[256];
     
    // precompute the CRC-64 table for one byte
    static {
    	// x64 + x4 + x3 + x1 + 1
    	long POLY64        = 0x000000000000001BL;
    	long POLY64Reverse = 0xd800000000000000L;
     
    	long reminder;
    	for(int i=0;i<256;i++) {
    		reminder = i;
    	    for (int j=0;j<8;j++) {
    	    	if ((reminder & 1) !=0)
    	    		reminder = (reminder >>> 1) ^ POLY64Reverse;
    	    	else
    	    		reminder = reminder >>> 1;
    	    }
    	    CRC64Table[i] = reminder;		
    	}
    }
     
    public static long crc64_fast(char[] sequence) {
    	long crc = 0;
    	for(int i=0;i<sequence.length;i++) {
    		int index = (int) ((crc ^ sequence[i]) & 0xff);
    		crc = CRC64Table[index] ^ (crc >>> 8);
    	}
    	return crc;
    }
     
    public static void main(String[] args) {
    	long crc = 0;
    	String s = "123456789"; // CRC64 = 46A5A9388A5BEFFE
     
    	crc = crc64_fast(s.toCharArray());
    	System.out.println(Long.toHexString(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
    30
    31
    32
     
     
     
    public static long crc64_slow(char[] sequence) {
    	// x64 + x4 + x3 + x1 + 1
    	long POLY64 = 0x000000000000001BL;
    	long POLY64Reverse = 0xd800000000000000L;
     
    	long reminder = 0;
    	for(int i=0;i<sequence.length;i++) {
     
    		reminder = reminder ^ sequence[i];
     
    		for (int bit=7;bit>=0;bit--) {
    			if ( (reminder & 0x1)==1) {
    				reminder = (reminder >>> 1)^ POLY64Reverse;
    			} else {
    				reminder = (reminder >>> 1);
    			}
    		}
    	}
    	return reminder;
    }
     
    public static void main(String[] args) {
    	long crc = 0;
    	String s = "123456789"; // CRC64 = 46A5A9388A5BEFFE
     
    	crc = crc64_slow(s.toCharArray());
    	System.out.println(Long.toHexString(crc));
     
    }




    Voici ma traduction :

    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
     
     
     
    unsigned long long calc_crc64(char [] ,  unsigned long sequence)
    {
        //long POLY64Reverse = 0xd800000000000000L;
     
      unsigned long reminder =0;
      int i, bit;
     
      for( i=0 ;i<sequence; i++)
     
      reminder = reminder ^ sequence ++;
     
     
    		for (bit=8; i>=0; i--)
    		{
    			if ( (reminder & 0x1)==1) 
    			{
    				reminder = (reminder >> 1)^ POLY64Reverse;
     
    			}
    			else
    			{
    				reminder = (reminder >> 1);
    			}
     
    	return reminder;
     
           }
    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
     
     
     
                  #ifndef _CRC64_H_
                 #define _CRC64_H_
     
        #define POLY64 0x000000000000001BL;
        #define POLY64Reverse 0xd800000000000000L;
     
     
     
     
    unsigned long long Update_CRC64(unsigned long long crc, unsigned char *buf, unsigned long len);
    unsigned long long calc_crc64(char [] ,  unsigned long sequence);
     
     
    #endif /* _CRC64_H_ */



    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
     
     
     
     
    unsigned long long  Hash64_End(unsigned long long hash, unsigned char *sequence)
    {
     
        unsigned  long reminder;
        int i, j;
     
    {
    		reminder = i;
    	    for ( j=0;j<8;j++)
    	    {
    	    	if ((reminder & 1) !=0)
     
    	    	do
    	    	{
     
    	    		reminder = (reminder >> 1) ^ POLY64Reverse;
     
    	    		reminder = (reminder >> 1);
    	    	}
     
    	    CRC64Table[i] = reminder;
     
     
         }
     
    }
     
     
    return reminder ;
     
    }


    Si y'a des gens qui pourront me corriger si j'ai fait des ERREURS de traduction de Java en C .


    Cordialement ,
    Fred .

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    Un Modérateur m'as conseillé un code écrit en JAVA et je souhaite le traduire en C tout simplement :
    http://www.cs.arizona.edu/projects/sumatra/toba/

  3. #3
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Bonjour Emmanuel.

    D'expérience, il est fiable ce site ?
    La traduction donnée est fiable ? niveau syntaxe et exécution ?

  4. #4
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par BainE Voir le message
    Bonjour Emmanuel.

    D'expérience, il est fiable ce site ?
    La traduction donnée est fiable ? niveau syntaxe et exécution ?
    A mon avis s'il le donne c'est qu'il y croit un peu Sinon qu'est-ce que c'est harmonieux du code java

  5. #5
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Oui mais y a croire et croire
    Faut il y croire pour une mise en prod par exemple (bon c'est osé mais sait on jamais)

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Toba is no longer maintained or supported, and these web pages are no longer being updated. You can still download Toba, but note that it is tied to the obsolete JDK version 1.1.
    ....
    The current version of Toba is version 1.1c, released April 13, 1999.
    Il est vraissemblable que ca suffise pour le probleme de ce fil, mais je ne me baserais pas la dessus pour beaucoup plus.

  7. #7
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 539
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 539
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    Un Modérateur m'as conseillé un code écrit en JAVA et je souhaite le traduire en C tout simplement :

    Vaut mieux prendre un compilateur C++ sinon tu vas te casser la tête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private static long[] CRC64Table = new long[256];
    En C new=malloc grossièrement .
    Sinon dans un fichier .cpp il suffit d'enlever private static et surtout de faire suivre avec tout new un delete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    System.out.println(Long.toHexString(crc));
    =>
    cout<<....// en C++ ou bien printf en C

  8. #8
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par BainE Voir le message
    Oui mais y a croire et croire
    Faut il y croire pour une mise en prod par exemple (bon c'est osé mais sait on jamais)
    La mise en production c'est autre chose, ne grillons pas les étapes

  9. #9
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    oui, c'est l exemple brutal par excellence, mais j ai toujours trouvé tres intéressant la conversion automatique de sources car mon petit cerveau a moi il a du mal, alors confier ca a une machine
    Mais je n'y ai jamais fait confiance.

  10. #10
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Merci à vous tous , ainsi qu'a Emmanuel Delahaye .


    Juste une chose que je ne maitrise pas , comment installer Toba ? .
    Comment le code Java sera traduit par Toba ?
    Je suis sous Code Blocks et Visual C++ 2008 Professional .

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    Merci à vous tous , ainsi qu'a Emmanuel Delahaye .


    Juste une chose que je ne maitrise pas , comment installer Toba ? .
    Comment le code Java sera traduit par Toba ?
    Je suis sous Code Blocks et Visual C++ 2008 Professional .
    Ben
    Toba runs under Irix 6.2, Linux 2.0, and Solaris 2.5
    ça va être chaud... Peut être qu'on peut récupérer les sources et régénérer le projet sous VC++2008 si il n'y a pas trop d'unixeries...

  12. #12
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Merci à vous Monsieur Delahaye , moi je suis sous Windows pas sous Unix ou Solaris .

    J'ai juste 2 codes a traduire :
    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
     
     
    public static long crc64_slow(char[] sequence) {
    	// x64 + x4 + x3 + x1 + 1
    	long POLY64 = 0x000000000000001BL;
    	long POLY64Reverse = 0xd800000000000000L;
     
    	long reminder = 0;
    	for(int i=0;i<sequence.length;i++) {
     
    		reminder = reminder ^ sequence[i];
     
    		for (int bit=7;bit>=0;bit--) {
    			if ( (reminder & 0x1)==1) {
    				reminder = (reminder >>> 1)^ POLY64Reverse;
    			} else {
    				reminder = (reminder >>> 1);
    			}
    		}
    	}
    	return reminder;
    }
     
    public static void main(String[] args) 
    {
    	long crc = 0
     
    public static void main(String[] args) {
    	long crc = 0;
    	String s = "123456789"; // CRC64 = 46A5A9388A5BEFFE
     
    	crc = crc64_slow(s.toCharArray());
    	System.out.println(Long.toHexString(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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
     
     
    // the precomputed values for all possible byte values
    private static long[] CRC64Table = new long[256];
     
    // precompute the CRC-64 table for one byte
    static {
    	// x64 + x4 + x3 + x1 + 1
    	long POLY64        = 0x000000000000001BL;
    	long POLY64Reverse = 0xd800000000000000L;
     
    	long reminder;
    	for(int i=0;i<256;i++) {
    		reminder = i;
    	    for (int j=0;j<8;j++) {
    	    	if ((reminder & 1) !=0)
    	    		reminder = (reminder >>> 1) ^ POLY64Reverse;
    	    	else
    	    		reminder = reminder >>> 1;
    	    }
    	    CRC64Table[i] = reminder;		
    	}
    }
     
    public static long crc64_fast(char[] sequence) {
    	long crc = 0;
    	for(int i=0;i<sequence.length;i++) {
    		int index = (int) ((crc ^ sequence[i]) & 0xff);
    		crc = CRC64Table[index] ^ (crc >>> 8);
    	}
    	return crc;
    }
     
    public static void main(String[] args) {
    	long crc = 0;
    	String s = "123456789"; // CRC64 = 46A5A9388A5BEFFE
     
    	crc = crc64_fast(s.toCharArray());
    	System.out.println(Long.toHexString(crc));
    }


    Quéstion : ça prendera combien de temps pour traduire les 2 Codes en langage C ?


    Merci pour vos réponses .

  13. #13
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 539
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 539
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    Quéstion : ça prendera combien de temps pour traduire les 2 Codes en langage C ?
    Merci pour vos réponses .
    Ce code tout simple ? Il y en a pour quelques minutes.
    Si j'ai un instant je pourrais le faire...
    Mais au lieu d'attendre vainement une réponse ,en achetant un simple bouquin sur le C++ genre Campus Press à 7 euros fera gagner un tems phénoménal

  14. #14
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Merci pour ton conseil Mat.M .

  15. #15
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Avril 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2006
    Messages : 92
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    Sinon dans un fichier .cpp il suffit d'enlever private static et surtout de faire suivre avec tout new un delete
    Sa suffit pas... en C++ quand tu fait

    Objet o=new Objet();
    Objet o2=o;

    c'est pas forcement équivalant... en java ...

    si tu modifie o2 en C++ sa n'affecte pas o, en java si ...
    en java meme la methode copy() ne te garanti pas que l'objet que tu a copier ne sera pas modifier si tu modifie la copy.

  16. #16
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par ITCsoft54 Voir le message
    Sa suffit pas... en C++ quand tu fait

    Objet o=new Objet();
    Objet o2=o;

    c'est pas forcement équivalant... en java ...

    si tu modifie o2 en C++ sa n'affecte pas o, en java si ...
    en java meme la methode copy() ne te garanti pas que l'objet que tu a copier ne sera pas modifier si tu modifie la copy.
    Ce n'est pas ce qu'il a dit...C'est toi qui déclare o2 de la sorte alors qu'il faudrait que se soit une référence.


Discussions similaires

  1. Programme Java à traduire en Fortran
    Par leons dans le forum Fortran
    Réponses: 1
    Dernier message: 22/03/2007, 14h55
  2. traduire une morceau de C++ en Java
    Par ToTo13 dans le forum Langage
    Réponses: 7
    Dernier message: 23/02/2007, 10h47
  3. traduire du C en Java
    Par ToTo13 dans le forum Langage
    Réponses: 7
    Dernier message: 16/09/2006, 10h27
  4. [Débat] Traduire du français vers le Java
    Par mtaveau dans le forum Général Java
    Réponses: 17
    Dernier message: 17/01/2006, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo