Подтвердить что ты не робот

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

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

Например:

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

Преобразование 54 до 84 (это 0x54)

4b9b3361

Ответ 1

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
}

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

Ответ 2

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

Ответ 3

Другой способ конвертировать int в hex.

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

Вы можете изменить прописную букву X на x.

Пример:

String.format("%X", 31) результаты 1F.

String.format("%X", 32) результаты 20.

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

Он должен быстро вспыхивать, поскольку он использует только бит-манипуляцию, значения utf-8 символов ASCII и рекурсию, чтобы избежать изменения 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)));
}

Ответ 8

Просто выполните следующее:

public static int specialNum(num){

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

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