it-swarm.com.ru

Целое с двумя цифрами шестнадцатеричный в Java

Мне нужно изменить целочисленное значение на 2-значное шестнадцатеричное значение в Java. Есть ли способ для этого . Спасибо

Мое наибольшее число будет 63, а наименьшее будет 0 . Я хочу ведущий ноль для небольших значений.

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

Если вы используете X вместо xкак предложено aristar , то вам не нужно использовать .toUpperCase().

125
GabrielOshiro
Integer.toHexString(42);

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

Обратите внимание, что это может дать вам более 2 цифр! (Целое число составляет 4 байта, поэтому вы можете получить обратно 8 символов.)

Вот немного хака, чтобы получить заполнение, если вы абсолютно уверены, что имеете дело только с однобайтовыми значениями (255 или меньше):

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

Многие другие (и лучшие) решения в целые числа с левым отступом (недесятичный формат) с нулями в Java .

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

Используйте Integer.toHexString() . Не забудьте дополнить начальным нулем, если в итоге вы получите только одну цифру. Если ваше целое число больше 255, вы получите более 2 цифр.

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

Если вам просто нужно распечатать их, попробуйте это: 

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

я использую это, чтобы получить строку, представляющую эквивалентное шестнадцатеричное значение целого числа, разделенного пробелом для каждого байта EX: шестнадцатеричное значение 260 в 4 байта = 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
Mohamed Abd El Raouf