Что такое параметр 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.