Python:选择代表二进制数的位数

Python: Choose number of bits to represent binary number

我很好奇如何改变位数来表示一个二进制数。例如,假设我要将十进制1表示为二进制。我使用:

箱(1)并获得0B1。

我怎样才能让报税表显示0b01、0b001或0b0001等?


使用格式字符串语法:

1
2
3
4
5
6
>>> format(1, '#04b')
'0b01'
>>> format(1, '#05b')
'0b001'
>>> format(1, '#06b')
'0b0001'

您可以使用str.zfill填充二进制部分:

1
2
3
def padded_bin(i, width):
    s = bin(i)
    return s[:2] + s[2:].zfill(width)


我不相信有一种内在的方法可以做到这一点。但是,由于bin只返回一个字符串,所以您可以编写一个包装函数来修改字符串,使其具有正确的位数:

1
2
3
4
5
6
7
def binbits(x, n):
   """Return binary representation of x with at least n bits"""
    bits = bin(x).split('b')[1]

    if len(bits) < n:
        return '0b' + '0' * (n - len(bits)) + bits
#