将二进制字符串转换为整数(Python)

时间:2015-09-29 01:44:16

标签: python string binary int

我已经制作了以下代码。这个想法是这个binStrToInt实际上将我的字符串识别为整数,并且可以将其转换为实际数字。 我的同事指出我的代码有一些错误。我注意到的只有那些 1.数学需要导入(对于int) 2.返回需要缩进 3. num = num + int(binary_Str [i])我不应该在那一行? 问题是:它不起作用。我不知道该怎么做

def binStrToInt(binary_str):


    """The function binStrToInt() takes in one input, a string of ones and 
    zeros (no spaces) called BINARY_STR.  It treats that input as a binary 
    number (base 2) and converts it to a decimal integer (base 10). It 
    returns an integer result."""

    length = len(binary_str)

    num = 0
    for i in range(length)
        num = num + int(binary_Str[i])
        num = num * 2
return num / 2

2 个答案:

答案 0 :(得分:2)

删除所有拼写错误和缩进问题时,它可以正常工作:

def binStrToInt(binary_str):


    """The function binStrToInt() takes in one input, a string of ones and
    zeros (no spaces) called BINARY_STR.  It treats that input as a binary
    number (base 2) and converts it to a decimal integer (base 10). It
    returns an integer result."""

    length = len(binary_str)

    num = 0
    for i in range(length):
        num = num + int(binary_str[i])
        num = num * 2
    return num / 2

但老实说,你怎么没看到这些?解释器会告诉你大部分(除了返回缩进之外)。正如评论者提到的那样,如果你传递一个字符串,内置的int()函数将执行相同的操作,而将数字2传递给二进制字符串。

编辑根据您在下面的评论,您会以某种方式使用特殊报价,可能是从网页或其他内容复制而来。这不会起作用 - 这是一个有效的例子和解释器中没有的东西:

>>> def binStrToInt(binary_str):
...     length = len(binary_str)
...     num = 0
...     for i in range(length):
...         num = num + int(binary_str[i])
...         num = num * 2
...     return num / 2
... 
>>> binStrToInt('101')
5
>>> binStrToInt(’101’)
  File "<stdin>", line 1
    binStrToInt(’101’)
                ^
SyntaxError: invalid syntax

答案 1 :(得分:0)

如果您可以将代码重写为

,则可以使逻辑更易于理解。
num = 0
for i in range(len(binary_str)):
    num = num * 2
    num = num + int(binary_str[i])
return num