Что такое параметр radix в Java и как он работает?
Я понимаю, что radix для функции Integer.parseInt()
является базой для преобразования строки. Не должно ли 11 base 10 преобразовываться с radix / base 16 быть B
вместо 17
?
следующий код печатает 17 по учебнику:
public class Test {
public static void main(String[] args) {
System.out.println( Integer.parseInt("11", 16) );
}
}
5 ответов
при выполнении ParseInt
работа с радиусом, 11 база 16 анализируется как 17, что является простым значением. Затем он печатается как radix 10.
вы хотите:
System.out.println(Integer.toString(11, 16));
это принимает десятичное значение 11 (не имея базы на данный момент, например, "одиннадцать" арбузов(на один больше, чем количество пальцев у человека)) и печатает его с помощью radix 16, в результате чего B
.
когда мы берем int
значение оно хранится как основание 2 внутри физическая память компьютера (почти во всех случаях), но это не имеет значения, поскольку преобразования parse и tostring работают с произвольным radix (по умолчанию 10).
Это на самом деле принимая 11
в шестнадцатеричном формате и преобразование его в десятичный. Так, например, если у вас был тот же код, но с "A"
в строке, он выводит 10
.
здесь
public class Test {
public static void main(String[] args) {
System.out.println(Integer.parseInt("11", 16));
}
}
11 is 16 номер на основе и должен быть преобразован в 10 i.e decimal.
So, integer of (11)16 = 1*16^1 +1*16^0 = 16+1 = 17
функция действует назад, как вы думаете. Вы конвертируете "11" в базе 16 в базу 10, поэтому результат равен 17.
для преобразования из базы 10 в базу 16 использовать
System.out.println(Integer.toString(11, 16));
выход будет b.