8

我很好奇如何更改位数来表示二进制数。例如,假设我想将十进制 1 表示为二进制。我用:

bin(1) 并得到 0b1。

我怎样才能得到回报说 0b01 或 0b001 或 0b0001 等?

4

3 回答 3

11

使用格式字符串语法

>>> format(1, '#04b')
'0b01'
>>> format(1, '#05b')
'0b001'
>>> format(1, '#06b')
'0b0001'
于 2012-12-03T02:40:57.290 回答
2

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

def padded_bin(i, width):
    s = bin(i)
    return s[:2] + s[2:].zfill(width)
于 2012-12-03T02:27:17.157 回答
0

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

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
# 
于 2012-12-03T02:27:00.377 回答