FWIW, все значения на самом деле находятся в базе 2 внутри вашей машины (держу пари, вы уже это знали). Он отображается только как основание 10, потому что преобразование строк создает строковые представления в базе 10 (например, при печати), потому что такие методы, как parseLong
, предполагают, что входная строка находится в базе 10, а компилятор ожидает, что все литералы будут в базе 10, ты на самом деле пишешь код. Другими словами, все в двоичном формате, компьютер только конвертирует данные в базу 10 и обратно для удобства нас, людей.
Отсюда следует, что мы должны легко иметь возможность изменить выходную базу на нечто отличное от 10, и, следовательно, получить строковые представления для того же значения в базе 9. В Java это делается путем передачи необязательного дополнительного базового параметра в Long.toString
метод.
long x=10;
System.out.println(Long.toString(x,9));