import sys
if sys.version_info[0] >= 3:
    bin = "{0:#0b}".format
    from functools import reduce

def a2bits(chars):
    "Convert a string to its bits representation as a string of 0's and 1's"
    return bin(reduce(lambda x, y : (x<<8)+y, (ord(c) for c in chars), 1))[3:]

Here is a much faster version using binascii.hexlify:

from binascii import hexlify

def a2bits(bytes):
    """Convert a sequence of bytes to its bits representation as a string of 0's and 1's
    This function needs python >= 2.6"""
    return bin(int(b"1" + hexlify(bytes), 16))[3:]

Edited 5 Years Ago by Gribouillis: n/a

Another possibility is to use a specialized module to handle binary data. One such module is bitstring (http://pypi.python.org/pypi/bitstring). Install it with easy_install or pip. Example:

>>> from bitstring import BitString
>>> bs = BitString(bytes="hello world")
>>> bs
BitStream('0x68656c6c6f20776f726c64')
>>> bs.bin
'0b0110100001100101011011000110110001101111001000000111011101101111011100100110110001100100'

The user manual is here

Edited 2 Years Ago by Gribouillis