Skip to main content

Simple construction, analysis and modification of binary data.

Project description

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 version supports Python 2.6 and later (including Python 3). For Python 2.4 and 2.5 you should instead download version 1.0.

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.

Installation

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.

If you haven’t yet downloaded the package then you can just try:

easy_install bitstring

or

pip install bitstring

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.6 and later.


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

For more information see the project’s homepage on Google Code: <http://python-bitstring.googlecode.com>

Project details


Release history Release notifications

History Node

3.1.5

History Node

3.1.4

History Node

3.1.3

This version
History Node

3.1.2

History Node

3.1.1

History Node

3.1.0

History Node

3.0.2

History Node

3.0.1

History Node

3.0.0

History Node

2.2.0

History Node

2.1.1

History Node

2.1.0

History Node

2.0.3

History Node

2.0.2

History Node

2.0.1_beta_2

History Node

2.0.0_beta_1

History Node

1.3.0

History Node

1.2.0

History Node

1.1.3

History Node

1.1.2

History Node

1.1.1

History Node

1.1.0

History Node

1.0.0

History Node

0.5.2

History Node

0.5.1

History Node

0.5.0

History Node

0.4.3

History Node

0.4.2

History Node

0.4.0

History Node

0.3.2

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
bitstring-3.1.2.zip (620.5 kB) Copy SHA256 hash SHA256 Source None Apr 18, 2013

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page