我有这个示例代码:
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
