Skip to content
A Python module to help you manage your bits
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc Adding Python logo for PDF manual Jul 14, 2019
test Fixing immutability bug (finally). Bug 176. Jul 7, 2019
.travis.yml Removing 3.7 tests as they're not available yet Jul 3, 2019
LICENSE Adding separate LICENSE file. May 17, 2016 Adding separate LICENSE file. May 17, 2016
README.rst Docs update for 3.1.6 release Jul 8, 2019
release_notes.txt Docs update for 3.1.6 release Jul 8, 2019


bitstring is a pure Python module designed to help make the creation and analysis of binary data as simple and natural as possible.

Bitstrings can be constructed from integers (big and little endian), hex, octal, binary, strings or files. They can be sliced, joined, reversed, inserted into, overwritten, etc. with simple functions or slice notation. They can also be read from, searched and replaced, and navigated in, similar to a file or stream.

bitstring is open source software, and has been released under the MIT licence.

This module works in both Python 2.7 and Python 3.


Probably all you need to do is:

pip install bitstring

Alternatively if you have downloaded and unzipped the package then you need to run the script with the 'install' argument:

python install

You may need to run this with root privileges on Unix-like systems.


The manual for the bitstring module is available here <>. It contains a walk-through of all the features and a complete reference section.

It is also available as a PDF: <>.

Simple Examples


>>> a = BitArray(bin='00101')
>>> b = Bits(a_file_object)
>>> c = BitArray('0xff, 0b101, 0o65, uint:6=22')
>>> d = pack('intle:16, hex=a, 0b1', 100, a='0x34f')
>>> e = pack('<16h', *range(16))

Different interpretations, slicing and concatenation:

>>> a = BitArray('0x1af')
>>> a.hex, a.bin, a.uint
('1af', '000110101111', 431)
>>> a[10:3:-1].bin
>>> 3*a + '0b100'

Reading data sequentially:

>>> b = BitStream('0x160120f')
>>> b.pos = 0
>>> b.readlist('uint:12, bin:3')
[288, '111']

Searching, inserting and deleting:

>>> c = BitArray('0b00010010010010001111')   # c.hex == '0x1248f'
>>> c.find('0x48')
>>> c.replace('0b001', '0xabc')
>>> c.insert('0b0000')
>>> del c[12:16]

Unit Tests

The 400+ unit tests should all pass for Python 2.7 and Python 3. To run them, from the test directory run:

python -m unittest discover

The bitstring module has been released as open source under the MIT License. Copyright (c) 2006 - 2019 Scott Griffiths

For more information see the project's homepage on GitHub: <>

You can’t perform that action at this time.