Skip to main content
 首页 » 编程设计

Python之为什么 `int(x, 2)` 只能用于字符串,不能用于整数

2025年05月04日42oomusou

我有这个示例代码:

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

会报错

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

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

我的问题:为什么会这样,在接受 int 的同时是否没有简单的方法来转换 bases?我发现整数转换方法需要一个字符串作为输入是相当违反直觉的。

请您参考如下方法:

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

在您的示例中,test 是一个数字。它没有基础。所有数字都是这样的:二进制 0x1011、十进制 11 和十六进制 0x0B 是完全相同的数字。三种写法只不过是同一事物的不同写法,就如同用汉字写三、三一样。当然,在计算机内部,数字以二进制表示——例如0b1111110011 - 但可以显示在您喜欢的任何基地。基数仅在将数字转换为字符串或从字符串转换时才相关。

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

test = 0b1011