Python-将8位二进制数转换为十进制

时间:2018-08-07 22:27:20

标签: python

import math

while True:
    try:
        user_bin = int(input('\nPlease enter binary number: '), 2)
    except ValueError:
        print('Please make sure your number contains digits 0-1 only.')
    else:
        print(user_bin)

我一直在浏览此站点,以查找有关如何完成作业的提示,该作业的基础是让用户输入8位二进制数并将其转换为十进制。或者在不符合要求的情况下弹出无效的输入错误。上面的代码似乎很有趣,因此我对其进行了测试,但我真的不明白代码的哪一部分将二进制转换为十进制。任何关于作业的提示以及解释将不胜感激。

1 个答案:

答案 0 :(得分:4)

转换二进制文件的部分是int。来自the documentation

  

如果给出了 base ,则x必须是字符串,bytesbytearray实例,表示基数 base 中的整数文字。

这意味着int接受代表整数的字符串,您可以将其告诉其底数。例如。在这里,我们给它"11",并告诉它它以基数2为基础,因此它以十进制返回整数3

>>> int("11", 2)
3

请注意,在提供base参数时,您必须提供一个字符串:

>>> int(11, 2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: int() can't convert non-string with explicit base

并且您不能使用在给定基数中无效的数字:

>>> int("21", 2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 2: '21'