58 votes

Java Convertir un entier en entier hexadécimal

Je suis en train de convertir un nombre d'un entier en un autre entier qui, une fois imprimé en hexadécimal, aurait la même apparence que l'entier original.

Par exemple:

Convertir 20 en 32 (qui est 0x20)

Convertir 54 en 84 (qui est 0x54)

0 votes

0 votes

Je viens de réaliser maintenant que pour résoudre réellement les cas de test donnés, il faut convertir hex en int, et non l'inverse. Cependant, le titre de la question qui dit "Convertir un entier en hexadécimal en Java" a conduit de nombreuses réponses, y compris la mienne et la plus votée, à la conversion de int en hex.

256voto

Ajith Points 761

La manière la plus simple est d'utiliser Integer.toHexString(int)

5 votes

La question était de convertir d'entier en entier, pas d'entier en chaîne de caractères. Veuillez relire la question.

38 votes

Cela n'a pas de sens, vous ne pouvez pas contrôler la représentation interne de l'entier. Si vous voulez quelque chose en hexadécimal, vous demandez par définition une représentation lisible par l'homme.

4 votes

@sircodesalot: La question concerne le calcul d'un entier avec une certaine propriété si imprimé en hexadécimal, ce qui est une conversion purement mathématique. Je suis fortement en désaccord avec Jossef qu'une réponse devrait être marquée comme correcte en se basant sur les résultats de Google, mais selon les votes, il semble que je sois en minorité.

42voto

João Silva Points 36619
public static int convert(int n) {
  return Integer.valueOf(String.valueOf(n), 16);
}

public static void main(String[] args) {
  System.out.println(convert(20));  // 32
  System.out.println(convert(54));  // 84
}

C'est-à-dire, traiter le nombre d'origine comme s'il était en hexadécimal, puis convertir en décimal.

3 votes

Converting from 4 bytes to a string, then from string to an int and then to hex? Non merci.

3 votes

Cette solution est erronée. Essayez d'exécuter ce qui suit: Integer.valueOf(String.valueOf(-2115381772), 16) - cela retourne une NumberFormatException.

1 votes

Cela convertit un nombre en base 16 en sa représentation en base 10. La bonne réponse est ci-dessous

7voto

dasblinkenlight Points 264350
int orig = 20;
int res = Integer.parseInt(""+orig, 16);

5voto

ppalasek Points 282

Vous pourriez essayer quelque chose comme ceci (la façon dont vous le feriez sur papier) :

public static int solve(int x){
    int y=0;
    int i=0;

    while (x>0){
        y+=(x%10)*Math.pow(16,i);
        x/=10;
        i++;
    }
    return y;
}

public static void main(String args[]){
    System.out.println(solve(20));
    System.out.println(solve(54));
}

Pour les exemples que vous avez donnés, cela calculerait : 0*16^0+2*16^1=32 et 4*16^0+5*16^1=84

4voto

ggreiner Points 5795
String input = "20";
int output = Integer.parseInt(input, 16); // 32

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X