Я пытаюсь преобразовать число из целого числа в другое целое число, которое при печати в шестнадцатеричном виде будет выглядеть так же, как и исходное целое число.
Например:
Преобразование от 20 до 32 (что составляет 0x20)
Преобразование 54 в 84 (что составляет 0x54)
Самый простой способ - использовать Integer.toHexString(int)
Integer.toHexString(int)
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 }
То есть обработайте исходное число, как если бы оно было шестнадцатеричным, а затем преобразуйте в десятичное число.
Другой способ преобразовать int в гекс .
String hex = String.format("%X", int);
Вы можете изменить прописные буквы X на x.1011 * Пример:
X
x
String.format("%X", 31) результаты 1F.
String.format("%X", 31)
1F
String.format("%X", 32) результаты 20.
String.format("%X", 32)
20
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
Оптимизируется следующее, если вы хотите вывести только шестнадцатеричное представление целого числа .
Он должен быть быстрым, поскольку он использует только битовую манипуляцию, значения utf-8 символов ASCII и рекурсию, чтобы избежать обращения StringBuilder в конце.
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) }
Он должен преобразовывать любое специальное десятичное целое число в его шестнадцатеричный аналог.