我正在尝试使用Python 2.7使用int(x,base)类功能
当我这样做时: num = int('100', 2)
我收到答案 4
但是,当我这样做时num = int('72', 2)
我得到以下回溯。
Traceback (most recent call last):
File "foobar1.py", line 26, in <module>
num = int('72', 4)
ValueError: invalid literal for int() with base 4: '72'
我不确定我错过了什么。
基数指定值的数字基数。例如,将 base 设置为 16 表示正在使用十六进制数,而将其设置为 8 表示正在使用八进制数字。
在八进制(以 8 为基数)中,您可以使用的数字是 0--7。尝试使用函数 num = int('89', 8) 转换数字 '89' 会给你一个错误,因为数字 8 和 9 没有用在以 8 为基数的数字中。同样,在基数 2 中,唯一可用的数字是 0 和 1 - 允许的最高数字将是基数 - 1。
希望这能解决问题。
72
不是二进制数(至少以8为基数),但是当您指定2
的基数时,您断言它是。所以你的函数失败了。
num = int('1001000', 2)
或:
num = int('1020', 4)
例如,将按预期工作,并为您提供一个等效于十进制72
的整数。
第二个参数表示基数。基数 2 表示该数字只能使用 2 个数字(即 0 和 1)。当您尝试从二进制(基数 2)转换 72 时,它会失败,因为二进制中不存在数字 7 和 2。
如果您尝试将数字转换为二进制,请使用 bin()