Почему базовое значение для int () ограничено между 36 и 2

Согласно информации, предоставленной @Vivick, ассоциативные массивы переходят в Javascript как объекты. Поэтому я буду обрабатывать объект внутри компонента Vue.

1
задан Martijn Pieters 18 January 2019 в 18:09
поделиться

3 ответа

Это практическое соглашение об осуществлении. Что вы представляете в качестве набора символов для базы 100? : -)

Использование цифр и всего алфавита достаточно распространено, поэтому функция base с непрерывным набором приемлемых базовых значений реализовала эту функциональность. Основание 1 просто len (arg).

Существует также соглашение для кодирования base-64; без соглашения для значений 37-63, однако, функция base оставила значение radix-64 для отдельного интерфейса.

0
ответ дан Prune 18 January 2019 в 18:09
поделиться

Прежде всего: вы можете указать базу только для int() при преобразовании строк в числа. Допустим, у вас есть строка с шестнадцатеричным числом , поэтому база 16:

>>> int('2a', 16)
42

Этот результат значительно отличается от той же строки, интерпретируемой как другая база:

>>> int('2a', 11)
32
>>> int('2a', 29)
68
[ 1112] Вам когда-либо понадобится база целого числа, только когда представляет значение визуально или при разборе целочисленного значения из строкового представления. Вы можете отображать целочисленное значение многими различными способами, но объект int является значением, а не визуальным представлением, и не имеет базы, и вы не можете изменить эту базу.

Логическое расширение, когда уже поддерживается шестнадцатеричное обозначение (цифры 0-9 и буквы AF), также поддерживается с использованием букв GZ, а 10 цифр и 26 букв позволяют использовать основание 36:

>>> int('zz', 36)
1295
[ 1114] Дальнейшие базы должны будут использовать не алфавитно-цифровые символы, для которых нет четкого предварительно установленного порядка.

Вы не можете иметь базу ниже 2; Вы не можете сосчитать только одной цифрой, значение 0 не изменится.

0
ответ дан Martijn Pieters 18 January 2019 в 18:09
поделиться

Аргумент base для int предназначен для использования при разборе строки, а не при передаче int в int:

>>> int('ff', 16)
255

Это хорошо установленное соглашение об использовании , b, c, ..., z для цифр, представляющих 10, 11, 12, ..., 35, но нет никакого соглашения о том, какой символ использовать для цифры 36 в базе 37.

0
ответ дан user2357112 18 January 2019 в 18:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: