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)
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)
La question était de convertir d'entier en entier, pas d'entier en chaîne de caractères. Veuillez relire la question.
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.
@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é.
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.
Cette solution est erronée. Essayez d'exécuter ce qui suit: Integer.valueOf(String.valueOf(-2115381772), 16)
- cela retourne une NumberFormatException.
Cela convertit un nombre en base 16 en sa représentation en base 10. La bonne réponse est ci-dessous
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
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.
0 votes
Possible duplicate de Comment obtenir une valeur hexadécimale à partir d'un entier en Java
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.