Встроенная функция Python - int()

Почему при вводе встроенной функции int('FACE', 16) с такими параметрами нам выдает ответ:

64206

Спасибо!


Ответы (2 шт):

Автор решения: MarianD

'FACE' - это строка из 4 букв, F, A, C, E.

Из-за того, что вы в качестве второго параметра вызова функции int() указали число 16, Python сначала проверяет, все ли символы в первом параметре являются шестнадцатеричными: либо «обычными» цифрами (0-9), или буквами из диапазона A-F (прописными или строчными — они представляют собой остальные шестнадцатеричные цифры 10-15).

В вашем случае все в порядке, буквы вашей строки представляют собой соответственно цифры 15, 10, 12 и 14, а Python вам выдает ответ в десятичной системе:

                  15 * 163   +   10 * 162   +   12 * 161   +   14 * 160   =   64206.

→ Ссылка
Автор решения: CrazyElf

В дополнение небольшой код, который делает вычисления, указанные в другом ответе (цифр в 16-ричном числе тут не предполагается, только буквы):

print(sum(16**i * (ord(ch) - ord('A') + 10) for i, ch in enumerate(reversed('FACE'))))
# 64206
  • 16**i - это как-раз 160, 161, 162...
  • ord(ch) - ord('A') + 10 - перевод 16-ричных букв ABCDEF в числа 10, 11, 12...
  • reversed - потому что вычислять проще от младших разрядов к старшим, там сразу понятно, что степень начинается с 0, её не нужно вычислять
→ Ссылка