Python-为什么只能将int(x,2)用于字符串,而不能用于整数?

时间:2018-10-23 12:59:21

标签: python python-3.x type-conversion int

我有以下示例代码:

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

这将引发错误

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

当我将test包装到str()中时,该代码有效,因为int转换需要一个字符串作为输入。

我的问题:为什么会这样,并且在接受int时没有简单的方法可以基于基数进行转换?我发现整数转换方法需要一个字符串作为输入,这很违反直觉。

2 个答案:

答案 0 :(得分:3)

因为将其应用于整数没有意义

在您的示例中,test是一个数字。它没有基础。所有数字都是这样的:二进制0x1011,十进制11和十六进制0x0B是完全相同的数字。三种书写方式只是记录同一件事的不同方式,就像将汉字用作3一样。当然,在内部,计算机中以二进制表示的数字-例如0b1111110011-但可以根据您的需要显示。仅在将数字转换为字符串或从字符串转换为数字时,基才有意义。

但是,如果您想使用二进制表示形式设置test,则可以简单地编写:

test = 0b1011

答案 1 :(得分:2)

此功能仅适用于字符串,因为仅当您具有数字的字符串表示形式时,基才相关。

如果您有整数,则没有关联的基数,它是一个数字。然后,您可以将其表示为以2、16或10为基数的字符串(或任何其他所需的字符串)。