Python 循环的二进制到十进制
嗨,我是一个新的程序员,我试图完成我的一个任务,这需要我把一个二进制数转换成一个二元数。我没有得到任何错误,但我没有得到正确的等值第纳尔,请帮助。这就是我到目前为止所做的Python 循环的二进制到十进制,python,python-3.x,bin,Python,Python 3.x,Bin,嗨,我是一个新的程序员,我试图完成我的一个任务,这需要我把一个二进制数转换成一个二元数。我没有得到任何错误,但我没有得到正确的等值第纳尔,请帮助。这就是我到目前为止所做的 binary = "10111" denary = 0 length=len(binary) for i in range(length-1,-1,-1): if binary[i] == "1": denary += (2**i) else: denary += 0 print(denary) 输出为
binary = "10111"
denary = 0
length=len(binary)
for i in range(length-1,-1,-1):
if binary[i] == "1":
denary += (2**i)
else:
denary += 0
print(denary)
输出为:
29
你走错方向了。您可以使用
二进制[:-1]
或反转(二进制)
反转数组
binary = "10111"
denary = 0
for i, d in enumerate(reversed(binary)):
if d == "1":
denary += (2**i)
print(denary)
还请注意,您可以执行以下操作:
denary = int(binary, 2) # Parses string on base 2 to integer base 10
print(denary)
您可以使用这样的反向列表:
binary = "10111" # needs to be reversed so the lowest bit is in front for ease of computing
denary = 0
# ind = index, bit = the bitvalue as string of the reversed string
for ind, bit in enumerate(binary[::-1]): # reversed copy of string
denary += int(bit)*2**ind # if bit is 0 this evaluates to 0, else to the power of 2
print(denary)
问题是,
i
将以相反的顺序对应十进制数字……我想您的作业不允许您使用int(binary,2)
?@dan04是的,我们被告知不要使用that@usr2564301不,我只是在Python3中需要它,很抱歉为Python2.7添加了漂亮而简单的标签,尽管enumerate(反向(二进制))
在我看来更具可读性。(看起来也快了20%左右。)@NathanVērzemnieks谢谢你的提示。我将把它包括在我的回答中:)