Java Конвертировать целое число в шестнадцатеричное целое - PullRequest
52 голосов
/ 17 февраля 2012

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

Например:

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

Преобразование 54 в 84 (что составляет 0x54)

Ответы [ 8 ]

249 голосов
/ 03 ноября 2012

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

39 голосов
/ 17 февраля 2012
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
}

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

11 голосов
/ 13 января 2016

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

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

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

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

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

7 голосов
/ 17 февраля 2012
int orig = 20;
int res = Integer.parseInt(""+orig, 16);
5 голосов
/ 17 февраля 2012

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

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

4 голосов
/ 17 февраля 2012
String input = "20";
int output = Integer.parseInt(input, 16); // 32
1 голос
/ 11 декабря 2013

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

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

Просто сделайте это:

public static int specialNum(num){

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

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

...