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

2024-04-18 11:26:26 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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


Tags: 函数代码formatnumberinputraw二进制整数
3条回答

二进制到十进制

int(binaryString, 2)

十进制到二进制

format(decimal ,"b")

如果您想/需要在没有int的情况下完成:

sum(int(c) * (2 ** i) for i, c in enumerate(s[::-1]))

这将反转字符串(s[::-1]),获取每个字符c及其索引ifor i, c in enumerate(),将字符(int(c))的整数乘以索引的幂(2 ** i),然后将它们全部相加(sum())。

您可以使用^{}并将基设置为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
>>>

相关问题 更多 >