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.
String.format("%02X", value);
Si vous utilisez X
au lieu de x
comme suggéré par aristar , vous n'avez pas besoin d'utiliser .toUpperCase()
.
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 .
String.format("%02X", (0xFF & value));
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();
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);
}
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));
}