不使用内置bin函数将整数转换为二进制

use*_*201 13 python binary list converter bit

该函数作为参数接收整数,并且应该返回表示以二进制表示的相同值的列表作为位列表,其中列表中的第一个元素是最重要(最左侧)位.

我的功能目前输出'1011'数字11,我需要[1,0,1,1].

例如,

>>> convert_to_binary(11)
[1,0,1,1]
Run Code Online (Sandbox Code Playgroud)

Jun*_* HU 11

def trans(x):
    if x == 0: return [0]
    bit = []
    while x:
        bit.append(x % 2)
        x >>= 1
    return bit[::-1]
Run Code Online (Sandbox Code Playgroud)

  • 输入0失败 (2认同)

Ósc*_*pez 9

只是为了好玩 - 作为递归单行的解决方案:

def tobin(x):
    return tobin(x/2) + [x%2] if x > 1 else [x]
Run Code Online (Sandbox Code Playgroud)

  • 在Python3中,这对输入x> = 9失败.修复:如果x> 1,则返回tobinr(x // 2)+ [x%2] (4认同)

小智 6

我可以提出以下建议:

def tobin(x,s):
    return [(x>>k)&1 for k in range(0,s)]
Run Code Online (Sandbox Code Playgroud)

这可能是最快的方法,对我来说似乎很清楚。当性能很重要时,bin方法太慢。

干杯

  • 什么是** x **和** s **? (2认同)