Python 2.7 int(str, base) 混淆

Python 2.7 int(str, base) confusion

我正在尝试使用 int(x, base) class 功能使用 Python 2.7

当我这样做时: 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'

我不确定我错过了什么。

72 不是二进制数(至少它是以 8 为底数),但是当您指定 2 的底数时,您断言它是。所以你的函数失败了。

num = int('1001000', 2)

或:

num = int('1020', 4)
例如,

会按预期工作,并为您提供一个等于十进制的整数 72

第二个参数表示base。基数 2 意味着该数字只能使用 2 个数字(0 和 1)。当您尝试从二进制(基数 2)转换 72 时失败,因为二进制中不存在数字 7 和 2。

如果您尝试将数字 转换为 二进制,请使用 bin()

基数指定值的基数。例如,将基数设置为 16 表示您正在处理十六进制数,而将其设置为 8 表示您正在处理八进制数。

在八进制(基数8)中,您可以使用的数字是0--7。尝试使用函数 num = int('89', 8) 转换数字 '89' 会给您一个错误,因为数字 8 和 9 未在基数 8 中使用。同样,在基数 2 中,您唯一可用的数字是 0 和 1 - 允许的最高数字将是基数 - 1。

希望这能解决问题。