Java Преобразует целое число в шестнадцатеричное целое
Я пытаюсь преобразовать число из целого числа в другое целое число, которое, если оно напечатано в шестнадцатеричном виде, будет выглядеть так же, как и исходное целое.
Например:
Преобразование 20 в 32 (что равно 0x20)
Преобразование 54 до 84 (это 0x54)
Ответы
Ответ 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)
}
Он должен преобразовать любое специальное десятичное целое в его шестнадцатеричную копию.