这是一个能够将二进制数作为字符串并将其转换为十进制数的函数。出于某种原因,此函数始终返回None,我无法理解为什么会发生这种情况。如果有人能给我一个解释,我将不胜感激。
total = 0
power = 0
def binaryToDecimal(binaryString):
global total, power
n = len(binaryString) - 1
if n < 0:
return total
else:
if binaryString[n] == '1':
total += (2 ** power)
power += 1
binaryToDecimal(binaryString[:-1])
答案 0 :(得分:1)
最后一行必须是return binaryToDecimal(binaryString[:-1])
。目前您从最后一次通话中返回total
,但之前的所有通话都没有返回任何内容。
答案 1 :(得分:0)
而不是递归调用,只需要像下面的for循环一样
def binaryToDecimal(binaryString):
total=0
# strip of 0b if there is any
binaryString = binaryString.lstrip('0b')
n=len(binaryString)
for i in range(n):
# index from lsb bit to msb
if binaryString[n-1-i] == '1':
total += (2 ** i)
return total
或者,建议只使用内置int函数的python
def binaryToDecimal(binaryString):
return int(binaryString, 2)