8

2進数を表すためにビット数を変更する方法に興味があります。たとえば、10進数の1を2進数に表現したいとします。私が使う:

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

You can use str.zfill to pad the binary part:

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

I don't believe there's a builtin way to do this. However, since bin just returns a string, you could write a wrapper function which modifies the string to have the right number of bits:

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 に答える