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 <http://packages.python.org/bitstring>. It contains a walk-through of all the features and a complete reference section.

It is also available as a PDF as part of the source download.

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 400+ 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) 2019 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.6.tar.gz (645.0 kB view details)

Uploaded Source

Built Distributions

bitstring-3.1.6-py3-none-any.whl (37.1 kB view details)

Uploaded Python 3

bitstring-3.1.6-py2-none-any.whl (37.1 kB view details)

Uploaded Python 2

File details

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

File metadata

  • Download URL: bitstring-3.1.6.tar.gz
  • Upload date:
  • Size: 645.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.7

File hashes

Hashes for bitstring-3.1.6.tar.gz
Algorithm Hash digest
SHA256 c97a8e2a136e99b523b27da420736ae5cb68f83519d633794a6a11192f69f8bf
MD5 38372014dd629be75c3a0ff7d799aa3f
BLAKE2b-256 f487fe6f7093088f4396e84c1b5d5dfb08c4840487ad46ff4805b7008c8f5ffc

See more details on using hashes here.

File details

Details for the file bitstring-3.1.6-py3-none-any.whl.

File metadata

  • Download URL: bitstring-3.1.6-py3-none-any.whl
  • Upload date:
  • Size: 37.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.7

File hashes

Hashes for bitstring-3.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 7b60b0c300d0d3d0a24ec84abfda4b0eaed3dc56dc90f6cbfe497166c9ad8443
MD5 679dc11291a73496341f8b5e3c662cbf
BLAKE2b-256 c7b9ce7458b35633968eae3477a201a00f6c8e01cab0ccb200ea5099d41dd977

See more details on using hashes here.

File details

Details for the file bitstring-3.1.6-py2-none-any.whl.

File metadata

  • Download URL: bitstring-3.1.6-py2-none-any.whl
  • Upload date:
  • Size: 37.1 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.7

File hashes

Hashes for bitstring-3.1.6-py2-none-any.whl
Algorithm Hash digest
SHA256 e392819965e7e0246e3cf6a51d5a54e731890ae03ebbfa3cd0e4f74909072096
MD5 940847e886be4f00eed310a76c26604c
BLAKE2b-256 c17520022e089ac83afdf448b1dbf2e7dfce3cd68d28cfb973440e23b32c2540

See more details on using hashes here.

Supported by

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