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。
希望这能解决问题。
我正在尝试使用 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。
希望这能解决问题。