Python 2.7 int(str,base)混淆

时间:2016-01-23 00:43:27

标签: python-2.7 base

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

我不确定我错过了什么。

3 个答案:

答案 0 :(得分:1)

72不是二进制数(至少它是基数8),但是当你指定2的基数时,你断言它是。{所以你的功能失败了。

num = int('1001000', 2)

或:

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

基数指定值的数字基数。例如,将base设置为16意味着您正在使用十六进制数字,而将其设置为8意味着您正在使用八进制数字。

在八进制(基数为8)中,可用的数字为0--7。试图转换数字&#39; 89&#39;使用函数num = int(&#39; 89&#39;,8)会出现错误,因为数字8和9未用于基数为8的数字。同样,在基数2中,您可用的唯一数字是0和1 - 允许的最高位数是基数-1.

希望这可以解决问题。