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

Langage Java Discussion :

Les nombres hexadecimaux


Sujet :

Langage Java

  1. #1
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut Les nombres hexadecimaux
    Bonsoir,

    j'aimerais savoir s'il existe un type hexadécimal en JAVA ? Si oui, pourriez vous me dire comment est ce qu'on les déclare ?

    De plus je voulais savoir comment on convertit un entier en hexadécimal et inversement (un hexa en entier) .

    Merci d'avance.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Le type int contient un nombre entier. Pour le visualiser sous une forme hexa, tu peux utiliser par exemple les methodes Integer.toHexString(), ou System.out.print("%x", mon_int).

  3. #3
    Membre émérite
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Par défaut
    non, il ny'a pas de type hexadecimal en Java
    mais tu peu tout de meme convertir un entier en Hexa(String)

    en utilisant :

    Integer.toHexString(int i);

  4. #4
    Membre averti Avatar de Green Lemon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 55
    Par défaut
    Citation Envoyé par LinkinSelim Voir le message
    non, il ny'a pas de type hexadecimal en Java
    mais tu peu tout de meme convertir un entier en Hexa(String)

    en utilisant :

    Integer.toHexString(int i);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       int i=5;
     
    	  System.out.println(Integer.toHexString(i));
    // Résultat 5, Hum je connais pas plus le hexa mais il est toujours en entier !?

  5. #5
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Merci beaucoup pour vos reponses.

    J'ai un peu de mal à comprendre, car je veux en fait faire l'addition d'un nombre hexadecimal avec un entier

    Par exemple:
    24E5 + 38

    Pour ce faire je voulais convertir 24E5 en entier et l'additionner à 38 puis convertir le resultat en hexa.

    Mais je vois pas comment faire pour declarer mon hexadécimal (que j'aurais lu dans un fichier ou sur l'entrée standard).

    Pourriez vous m'aider SVP.

  6. #6
    Membre émérite
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Par défaut
    tu as :
    Integer.parseInt(String s,int radix)

    où radix est la base,dans ton cas, la base des nombre Hexa est 16
    donc tu va faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String s = "24E5";
    int somme = Integer.parseInt(s,16) + 38
    regardes ces exemple
    Integer.parseInt("0", 10) returns 0
    Integer.parseInt("473", 10) returns 473
    Integer.parseInt("-0", 10) returns 0
    Integer.parseInt("-FF", 16) returns -255
    Integer.parseInt("1100110", 2) returns 102
    Integer.parseInt("2147483647", 10) returns 2147483647
    Integer.parseInt("-2147483648", 10) returns -2147483648
    Integer.parseInt("2147483648", 10) throws a NumberFormatException
    Integer.parseInt("99", 8) throws a NumberFormatException
    Integer.parseInt("Kona", 10) throws a NumberFormatException
    Integer.parseInt("Kona", 27) returns 411787
    regarde ca http://javasearch.developpez.com/j2s....String,%20int)

    on peu meme convertir du binaire vert l'int

    j'espere que ca va t'aider

  7. #7
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Merci Selim,

    c'est sympa, je crois que cela va beaucoup m'aider.
    donc si je comprends bien je dois alors declarer mon hexa en String ???

  8. #8
    Membre émérite
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Par défaut
    derien, content que ca peu t'aider

    oui tu declare ton Hexa en String, d'ailleurs quand tu lis du clavier tu va lire un String c'est sure, tu le donne a parseInt(String s,16) et elle te renvoi un int.

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Par défaut
    Juste une petite précision pour déclarer facilement des constantes hexa en java il suffit de faire préceder ton hexa par 0x exemple:

    final int myConstante=0xFF; //ici x=255

    Ensuite tu peux faire tout tes calculs en int ou long et comme la écrit "LinkinSelim"
    afficher le resultat en hexa grace à System.out.println(Integer.toHexString(i));

    int resultat = 0;
    int nombreLu = 55; //un exemple

    result = nombreLu+myConstante; //easy no ?
    //Deux facons differentes d'afficher le meme resultat
    System.out.println(Integer.toHexString(i));
    System.out.println(i);

    En fait le chiffre est toujours le même dans la machine. Hexa, Decimal, Binaire ... sont juste des façons differentes d'afficher un chiffre.

  10. #10
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par elmor Voir le message
    En fait le chiffre est toujours le même dans la machine. Hexa, Decimal, Binaire ... sont juste des façons differentes d'afficher un chiffre.
    +1

    Les valeurs numériques sont toutes représenté en binaire en mémoire (tout est binaire !). Ce n'est que lors de la représentation de la valeur du nombre que l'on utilise un formattage particulier. Par défaut c'est la base décimale qui est utilisé car c'est la plus facilement lisible pour un humain, mais rien ne t'empêche d'utiliser un autre format, bref :

    • Tu manipules tes int normalement.
    • Lorsque tu les affiches (à l'écran, dans un fichier, etc.) tu les formattes selon tes besoins



    Note : perso j'aurais désormais tendance à utiliser System.out.printf() (ou String.format()) qui permet un meilleur contrôle du résultat, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	// Avec toHexString() on n'a aucun controle :
    	System.out.println( Integer.toHexString(value) );	// 1f40
     
    	// Avec printf() on peut simplement choisir d'utiliser des
    	// minuscule/majuscule en utilise %x ou %X :
    	// (note : %n = retour à la ligne)
    	System.out.printf( "%x%n", value );			// 1f40
    	System.out.printf( "%X%n", value );			// 1F40
     
    	// Ou encore de définir une taille minimum complété par des zéro :
    	System.out.printf( "%06x%n", value );		// 001f40
    	System.out.printf( "%06X%n", value );		// 001F40
    Plus d'info : http://javasearch.developpez.com/j2s...Formatter.html

    a++

  11. #11
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Merci à tous, j'ai resolu mon probleme.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MS-DOS] Compter les nombres de jours entre deux dates diffé
    Par Furius dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 19/02/2006, 13h33
  2. Réponses: 24
    Dernier message: 27/09/2005, 21h16
  3. Les nombres complexe et delphi
    Par wikers dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2005, 11h47
  4. [VB6]fonction inverse de Hex (nombres hexadécimaux)
    Par Guigui_ dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/10/2002, 19h31

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