Модуль bitstring может оказаться полезным, если у вас есть более сложные потребности, чем может обеспечить форматирование строки.
>>> from bitstring import BitArray
>>> a = BitArray(24) # 24 zero bits
>>> a.uint = 2**24/11 # set the unsigned integer propery
>>> a.bin # get the binary propery
'000101110100010111010001'
Он никогда не отрежет начальные нулевые биты и может сделать несколько других полезных трюков
>>> a.uint /= 2
>>> a.bin
'000010111010001011101000'
>>> list(a.findall('0b1011'))
[4, 14]
>>> a *= 2 # concatenation
>>> a.bin
'000010111010001011101000000010111010001011101000'
>>> a.replace('0b00001', '0xe')
2 # 2 replacements made
>>> a.bin
'1110011101000101110100011100111010001011101000'
Я не уверен в ваших точных потребностях, так что все этоможет быть излишним, и вы, возможно, не захотите использовать внешнюю библиотеку в любом случае, но встроенная в Python поддержка битовых массивов является немного базовой.