web-dev-qa-db-fra.com

Java Convertir un entier en entier hexadécimal

J'essaie de convertir un nombre d'un entier en un autre entier qui, s'il était imprimé en hexadécimal, aurait la même apparence que l'entier d'origine.

Par exemple:

Convertir 20 en 32 (qui est 0x20)

Convertir 54 en 84 (qui est 0x54)

53
user1215143
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
}

En d'autres termes, traitez le nombre d'origine comme s'il était en hexadécimal, puis convertissez-le en décimal.

39
João Silva

Le moyen le plus simple consiste à utiliser Integer.toHexString(int)

250
Ajith

Une autre façon de convertir int to hex.

String hex = String.format("%X", int);

Vous pouvez changer les majuscules X en x pour les minuscules.

Exemple:

String.format("%X", 31) résultats 1F.

String.format("%X", 32) résultats 20.

11
Wit
int orig = 20;
int res = Integer.parseInt(""+orig, 16);
7
dasblinkenlight

Vous pouvez essayer quelque chose comme ceci (comme 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, ceci calculerait: 0 * 16 ^ 0 + 2 * 16 ^ 1 = 32 et 4 * 16 ^ 0 + 5 * 16 ^ 1 = 84

5
ppalasek
String input = "20";
int output = Integer.parseInt(input, 16); // 32
4
ggreiner

Le texte suivant est optimisé si vous souhaitez uniquement imprimer la représentation hexa d’un entier positif.

Il devrait être rapide car il utilise uniquement la manipulation de bits, les valeurs utf-8 de ASCII caractères et récursivité pour éviter l'inversion d'un StringBuilder à la fin.

public static void hexa(int num) {
    int m = 0;
    if( (m = num >>> 4) != 0 ) {
        hexa( m );
    }
    System.out.print((char)((m=num & 0x0F)+(m<10 ? 48 : 55)));
}
1
Snicolas

Faites simplement ceci:

public static int specialNum(num){

    return Integer.parseInt( Integer.toString(num) ,16)
}

Il devrait convertir tout entier décimal spécial en son équivalent hexadécimal.

0
ed9w2in6