web-dev-qa-db-fra.com

Entier à deux chiffres hexadécimaux en Java

J'ai besoin de changer une valeur entière en valeur hexadécimale à 2 chiffres en Java.Il n'y a aucun moyen pour cela ...

Mon plus grand nombre sera 63 et le plus petit sera 0 ..__ Je veux un zéro pour les petites valeurs.

67
Salih Erikci
String.format("%02X", value);

Si vous utilisez X au lieu de xcomme suggéré par aristar , vous n'avez pas besoin d'utiliser .toUpperCase().

125
GabrielOshiro
Integer.toHexString(42);

Javadoc: http://docs.Oracle.com/javase/6/docs/api/Java/lang/Integer.html#toHexString(int)

Notez que cela peut vous donner plus de 2 chiffres, cependant! (Un entier est 4 octets, donc vous pourriez potentiellement récupérer 8 caractères.)

Voici quelques astuces pour obtenir votre remplissage, tant que vous êtes absolument certain de ne traiter que des valeurs à un octet (255 ou moins):

Integer.toHexString(0x100 | 42).substring(1)

Beaucoup plus (et meilleures) de solutions à Entiers de remplissage à gauche (format non décimal) avec zéros en Java .

27
ziesemer
String.format("%02X", (0xFF & value));    
24
aristar

Utilisez Integer.toHexString() . N'oubliez pas de compléter avec un zéro si vous vous retrouvez avec un seul chiffre. Si votre entier est supérieur à 255, vous aurez plus de 2 chiffres.

StringBuilder sb = new StringBuilder();
sb.append(Integer.toHexString(myInt));
if (sb.length() < 2) {
    sb.insert(0, '0'); // pad with leading zero if needed
}
String hex = sb.toString();
14
Asaph

Si vous avez juste besoin de les imprimer, essayez ceci: 

for(int a = 0; a < 255; a++){
    if( a % 16 == 0){
        System.out.println();
    }
    System.out.printf("%02x ", a);
}
3
java4loop

j'utilise ceci pour obtenir une chaîne représentant la valeur hexadécimale équivalente d'un entier séparé par un espace pour chaque octet EX: valeur hexadécimale de 260 en 4 octets = 00 00 01 04

    public static String getHexValString(Integer val, int bytePercision){
    StringBuilder sb = new StringBuilder();
    sb.append(Integer.toHexString(val));

    while(sb.length() < bytePercision*2){
        sb.insert(0,'0');// pad with leading zero
    }

    int l = sb.length(); // total string length before spaces
    int r = l/2; //num of rquired iterations

    for (int i=1; i < r;  i++){
        int x = l-(2*i); //space postion
        sb.insert(x, ' ');
    }
    return sb.toString().toUpperCase();         
}

public static void main(String []args){
    System.out.println("hex val of 260 in 4 bytes = " + getHexValString(260,4));
}
0