Python 2.7 int(str, base) confusion



我正在尝试使用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()

最新更新