我想编写一个函数,该函数需要一个Binary字符串,并将结果返回为Decimal。
我已经写了一些代码,但是如果我不知道它需要是二进制字符串,而不仅仅是数字。有没有一种方法可以更改代码,以便它接收字符串?我不想将二进制数转换为浮点数,我想将其转换为十进制数。
#Binary to Decimal
def bi_to_dec(binary):
binary1 = binary
decimal, i, n = 0, 0, 0
while(binary != 0):
dec = binary % 10
decimal = decimal + dec * pow(2, i)
binary = binary//10
i += 1
return decimal
答案 0 :(得分:1)
我将假设这是一个练习,您必须自己编写算法。否则,您应该只使用内置函数int(binary, 2)
来将基数2中的字符串binary
解析为int
。
如果binary
是一个字符串,则您需要更改的代码部分是从字符串中获取各个位的部分。您可以通过写入for bit in reversed(binary):
遍历字符串中的位。这为您提供了一个变量bit
,它是当前位作为字符串,并且由于您反转了字符串,因此按照算法的要求,位的顺序从最低有效到最高有效。从那里,您可以简单地使用dec = int(bit)
将该位转换为int。