Python - почему `int (x, 2)` можно использовать только для строк, но не для целых чисел? - PullRequest
0 голосов
/ 23 октября 2018

У меня есть этот пример кода:

test = 1011
test2 = int(test, 2)
print(test2)

, который выдаст ошибку, говорящую

int() can't convert non-string with explicit base

Код работает, когда я обертываю test в str(), так как int-conversion нужна строка в качестве входных данных.

Мой вопрос: почему это так, и нет ли простого способа конвертации по базам при принятии int?Я нахожу довольно нелогичным, что метод преобразования целочисленных значений требует ввода строки.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Поскольку применять его к целым числам не имеет смысла

В вашем примере test - это число.У него нет базы.Все числа такие: двоичный 0x1011, десятичный 11 и шестнадцатеричный 0x0B - это точно такое же число .Три способа его написания - это просто разные способы записать одно и то же, так же как и использование китайского символа для 3, be.Внутренне, конечно, в компьютерах числа представлены в двоичном формате - например, 0b1111110011 - но могут отображаться в любой базе, которая вам нравитсяБазы имеют значение только при преобразовании числа в строку или из нее.

Однако, если вы хотите установить test, используя двоичное представление, вы можете просто написать:

test = 0b1011
0 голосов
/ 23 октября 2018

Эта функция работает только со строками, потому что основание имеет значение только в том случае, если у вас есть строковое представление числа.

Если у вас есть целое число, то нет связанного основания, это число.И затем, вы можете представить его как строку в базе 2, 16 или 10 (или любую другую, какую хотите).

...