Skip to main content

Simple construction, analysis and modification of binary data.

Project description

/doc/bitstring_logo_small.png

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.

Installation

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 setup.py script with the ‘install’ argument:

python setup.py install

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

Documentation

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

It is also available as a PDF at <https://readthedocs.org/projects/bitstring/downloads/pdf/latest/>.

Simple Examples

Creation:

>>> 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
'1110101'
>>> 3*a + '0b100'
BitArray('0o0657056705674')

Reading data sequentially:

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

Searching, inserting and deleting:

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

Unit Tests

The 500+ unit tests should all pass for Python 2.7 and later. 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) 2008-2020 Scott Griffiths

For more information see the project’s homepage on GitHub: <https://github.com/scott-griffiths/bitstring>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bitstring-3.1.7.tar.gz (195.8 kB view details)

Uploaded Source

File details

Details for the file bitstring-3.1.7.tar.gz.

File metadata

  • Download URL: bitstring-3.1.7.tar.gz
  • Upload date:
  • Size: 195.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2

File hashes

Hashes for bitstring-3.1.7.tar.gz
Algorithm Hash digest
SHA256 fdf3eb72b229d2864fb507f8f42b1b2c57af7ce5fec035972f9566de440a864a
MD5 18661a3e5c47c59bd926dd0fefae0baa
BLAKE2b-256 c3fcffac2c199d2efe1ec5111f55efeb78f5f2972456df6939fea849f103f9f5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page