从二进制转换为十进制python函数

时间:2015-11-11 21:53:34

标签: python while-loop binary decimal

我遇到了将十进制数转换为二进制数的两种不同函数的问题。我希望二进制数以列表的形式返回,每个数字之间都有逗号。即>>>二进制(19)返回[1,0,0,1,1] 我的第一个函数说'int太大而无法转换为float',第二个函数返回字符串中的二进制数,而不是带逗号的列表,而且我很难改变它。 第一个功能:

    def Binary(n):
    i=1
    s=0
    while n>0:
        rem=n%2
        s=s+(i*rem)
        n=n/2
        i=i*10
    return s

我的第二个函数返回一个字符串:

    def Binary2(n):
        binstr = ''
        if n == 0: return '0'
        while n > 0:
           binstr = str(n % 2) + binstr
           n = n >> 1
        return binstr

我只需要一个函数来输出我正在寻找的结果,所以我感谢任何帮助,谢谢:)

我也知道有更简单的方法可以做到这一点,但我更喜欢坚持使用while循环

2 个答案:

答案 0 :(得分:1)

def binary(n):
    binlist = [int(x) for x in bin(n)[2:]]
    return binlist

如果你真的想使用while循环:

def binary(n):
    binary = list()
    while n > 0:
        binary.insert(0, n%2)
        n /= 2

    return binary

答案 1 :(得分:-1)

如果你从未创建一个list,你期望得到什么?

首先,您应该将返回值初始化为空列表[]。 然后使用append(在末尾添加每个新项目)或insert(将其添加到开头)。