将二进制转换为十进制整数输出

新手上路,请多包涵

我需要将二进制输入转换为十进制整数。我知道如何从十进制转为二进制:

 n = int(raw_input('enter a number: '))
print '{0:b}'.format(n)

我需要往相反的方向走。我的教授说,当他检查我们的代码时,他将输入 11001 ,他应该得到 25 回来。我查看了我们的笔记,但我不知道该怎么做。谷歌和其他互联网资源也没有多大帮助。

最大的问题是不允许我们使用内置函数。我理解为什么不允许我们使用它们,但这让这个问题变得更加困难,因为我知道 Python 有一个内置的二进制到十进制的函数。

原文由 purlinka 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 415
1 个回答

您可以使用 int 并将基数设置为 2 (二进制):

 >>> binary = raw_input('enter a number: ')
enter a number: 11001
>>> int(binary, 2)
25
>>>


但是,如果你不能像那样使用 int ,那么你总是可以这样做:

 binary = raw_input('enter a number: ')
decimal = 0
for digit in binary:
    decimal = decimal*2 + int(digit)
print decimal

下面是一个演示:

 >>> binary = raw_input('enter a number: ')
enter a number: 11001
>>> decimal = 0
>>> for digit in binary:
...     decimal = decimal*2 + int(digit)
...
>>> print decimal
25
>>>

原文由 user2555451 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进