为什么Python中用int()指定base=2转换二进制值时会报错
错误原因
0b1101是Python原生的二进制整数字面量,赋值给a之后,a已经是值为13的int类型数据,不是字符串类的文本内容。int()函数在显式传入base参数(也就是你写的第二个参数2)时,要求第一个参数必须是字符串、字节串这类可按进制规则解析的文本类型,设计上base参数的作用就是指定解析文本的进制,已经是整数的输入不需要也不支持搭配base参数使用,因此会抛出TypeError: int() can't convert non-string with explicit base错误。- 当你不指定base参数,单参数调用
int()时,函数的作用是做通用类型转换:如果输入本身已经是int类型,会直接返回原值,所以代码可以正常运行输出13。
如果你需要用到base参数做进制转换,正确写法应该是将二进制内容定义为字符串:
a = "1101" b = int(a, 2) print(b) # 输出结果:13
内容的提问来源于stack exchange,提问作者Nibin
相关产品推荐
相关产品推荐

