【问题标题】:Python - Converting Binary (list) to Decimal [closed]Python - 将二进制(列表)转换为十进制 [关闭]
【发布时间】:2021-01-31 02:46:20
【问题描述】:

我一直在尝试编写将二进制列表转换为十进制的代码,例如:

[1,1,0,1] 

目前我写的代码如下:

def binatodeci(binary):
    binary = []
    decimal = 0 
    binary.reverse()
    for i in range(len(binary)):
        decimal = decimal + (2**i)*binary[i]
    return decimal

但是,每次我尝试使用此函数时,它都会返回 0。为什么会这样?我似乎无法发现代码中的错误。

【问题讨论】:

    标签: python math binary


    【解决方案1】:

    在您的代码中,只需删除此行,因为您会立即重新分配函数输入参数

    binary = []
    

    作为更简洁的选择

    def binatodeci(binary):
        return sum(val*(2**idx) for idx, val in enumerate(reversed(binary)))
    

    例子

    >>> binatodeci([1,1,0,1])
    13
    

    【讨论】:

      【解决方案2】:

      Cory Kramer's answer 中所述,只需删除代码开头的binary = [] 行即可完美运行。

      这是一个可供思考的替代算法:

      def binatointeger(binary):
        number = 0
        for b in binary:
          number = (2 * number) + b
        return number
      

      重要提示

      请注意,生成的数字不是十进制。这是一个python整数。在计算机内部,python 整数以二进制形式存储。当调用函数printstrrepr 以将数字打印到屏幕上时,会发生转换为十进制表示,即转换为一串数字。

      【讨论】:

        猜你喜欢
        • 2021-02-16
        • 2021-01-29
        • 2013-11-07
        • 2021-05-09
        • 2016-08-13
        • 2020-08-06
        • 2023-03-15
        • 1970-01-01
        • 2012-06-26
        相关资源
        最近更新 更多