代码之家  ›  专栏  ›  技术社区  ›  AlliDeacon

Python 2.7 int(str,base)混淆

  •  0
  • AlliDeacon  · 技术社区  · 9 年前

    我正在尝试使用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 回复  |  直到 9 年前
        1
  •  1
  •   Laughing Vergil    9 年前

    基数指定值的数字基数。例如,将基数设置为16表示您使用的是十六进制数字,而将基数设置成8表示您使用八进制数字。

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

    希望这能把事情弄清楚。

        2
  •  1
  •   Crowman    9 年前

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

    num = int('1001000', 2)
    

    或:

    num = int('1020', 4)
    

    例如,将按预期工作,并给您一个等于十进制的整数 72 .

        3
  •  1
  •   Minderov    9 年前

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

    如果您试图转换号码 二进制,使用 bin()