Java преобразование целого числа в шестнадцатеричное целое число
Я пытаюсь преобразовать число из целого числа в другое целое число, которое, если его напечатать в шестнадцатеричном формате, будет выглядеть так же, как и исходное целое число.
например:
преобразование 20 в 32 (что 0x20)
конвертировать 54 в 84 (что 0x54)
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 }
то есть, обрабатывайте исходное число, как если бы оно было в шестнадцатеричном виде, а затем преобразуйте в десятичное.
альтернативный способ преобразования int в hex.
String s = String.format("%X", num);
вы можете изменить капитал
X
tox
для нижнего регистра.
вы можете попробовать что-то вроде этого (так, как вы бы сделали это на бумаге):
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
следующее оптимизировано, если вы хотите напечатать только шестнадцатеричное представление 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))); }