在python中,将基数为2(二进制)的数字转换为基数为10的操作不太好



我正试图编写一个代码,将二进制数转换为以10为基数的数字,但它似乎有一个小问题(逻辑或计算(。我不明白我做错了什么。我在网上搜索了一下,但没有找到我想要的解决方案(显然还有其他方法可以转换(。如何修复我的代码?我想我已经非常接近实际结果了。。。

我的代码

num = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0]
string = ''
for i in num:
string += str(i)
print(string)
def bin_to_dec(binary):
decimal = 0
for i in range(len(binary)):
if string[i] == '1':
decimal += 2 ** (len(string) - i - 1)
if i == len(string) - 1:
decimal += 1
return decimal
print(bin_to_dec(string))

预期输出

4294967286

代码输出

4294967277

我是蟒蛇的新手,请不要对我苛刻:D

我相信这段代码会给您正确的结果。

decimal = 0
for i in range(len(binary)):
if binary[i] == '1':
decimal += 2 ** (len(binary) - i - 1)
return decimal

我不知道你是怎么计算预期产量的,但根据我的数学计算,这是错误的。这个位数的最大值是4294967295,你的数字去掉了19,剩下4294967276,我很确定这是正确的答案。

最新更新