Java преобразование целого числа в шестнадцатеричное целое число


Я пытаюсь преобразовать число из целого числа в другое целое число, которое, если его напечатать в шестнадцатеричном формате, будет выглядеть так же, как и исходное целое число.

например:

преобразование 20 в 32 (что 0x20)

конвертировать 54 в 84 (что 0x54)

8   51  

8 ответов:

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
}

то есть, обрабатывайте исходное число, как если бы оно было в шестнадцатеричном виде, а затем преобразуйте в десятичное.

самый простой способ-это использовать Integer.toHexString(int)

альтернативный способ преобразования int в hex.

String s = String.format("%X", num);

вы можете изменить капитал X to x для нижнего регистра.

int orig = 20;
int res = Integer.parseInt(""+orig, 16);

вы можете попробовать что-то вроде этого (так, как вы бы сделали это на бумаге):

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));
}

для тех примеров, которые вы дали бы посчитать: 0*16^0+2*16^1=32 и 4*16^0+5*16^1=84

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

следующее оптимизировано, если вы хотите напечатать только шестнадцатеричное представление a положительное целое число.

Он должен быть пылающим быстро, поскольку он использует только битовые манипуляции, значения utf-8 символов ASCII и рекурсию, чтобы избежать реверсирования a StringBuilder в конце.

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)));
}

просто сделать это:

public static int specialNum(num){

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

он должен преобразовать любое специальное десятичное целое число в его шестнадцатеричный аналог.