Skip to main content

Simple construction, analysis and modification of binary data.

Project description

bitstring

bitstring is a Python module to help make the creation and analysis of all types of bit-level binary data as simple and efficient as possible.

It has been actively maintained since 2006.

CI badge Docs Codacy Badge Dependents (via libraries.io)     Pepy Total Downlods PyPI - Downloads

News

April 2024: bitstring 4.2.1 released.

New in version 4.2:

  • Dropped support for Python 3.7. Minimum version is now 3.8.
  • A new Dtype class can be optionally used to specify types.
  • The bitstring.options object is now the preferred method for changing module options.
  • New fromstring method as another way to create bitstrings from formatted strings.
  • More types can now be pretty printed.
  • A range of 8-bit, 6-bit and even 4-bit floating point formats added (beta):
  • Performance improvements.

See the release notes for details. Please let me know if you encounter any problems.

Overview

  • Efficiently store and manipulate binary data in idiomatic Python.
  • Create bitstrings from hex, octal, binary, files, formatted strings, bytes, integers and floats of different endiannesses.
  • Powerful binary packing and unpacking functions.
  • Bit-level slicing, joining, searching, replacing and more.
  • Create and manipulate arrays of fixed-length bitstrings.
  • Read from and interpret bitstrings as streams of binary data.
  • Rich API - chances are that whatever you want to do there's a simple and elegant way of doing it.
  • Open source software, released under the MIT licence.

Documentation

Extensive documentation for the bitstring module is available. Some starting points are given below:

There is also an introductory walkthrough notebook on binder.

Release Notes

To see what been added, improved or fixed, and also to see what's coming in the next version, see the release notes.

Examples

Installation

$ pip install bitstring

Creation

 >>> from bitstring import Bits, BitArray, BitStream, pack
 >>> a = BitArray(bin='00101')
 >>> b = Bits(a_file_object)
 >>> c = BitArray('0xff, 0b101, 0o65, uint6=22')
 >>> d = pack('intle16, hex=a, 0b1', 100, a='0x34f')
 >>> e = pack('<16h', *range(16))

Different interpretations, slicing and concatenation

 >>> a = BitArray('0x3348')
 >>> a.hex, a.bin, a.uint, a.float, a.bytes
 ('3348', '0011001101001000', 13128, 0.2275390625, b'3H')
 >>> a[10:3:-1].bin
 '0101100'
 >>> '0b100' + 3*a
 BitArray('0x866906690669, 0b000')

Reading data sequentially

 >>> b = BitStream('0x160120f')
 >>> b.read(12).hex
 '160'
 >>> b.pos = 0
 >>> b.read('uint12')
 352
 >>> b.readlist('uint12, bin3')
 [288, '111']

Searching, inserting and deleting

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

Arrays of fixed-length formats

 >>> from bitstring import Array
 >>> a = Array('uint7', [9, 100, 3, 1])
 >>> a.data
 BitArray('0x1390181')
 >>> a[::2] *= 5
 >>> a
 Array('uint7', [45, 100, 15, 1])

Copyright (c) 2006 - 2024 Scott Griffiths

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-4.2.1.tar.gz (250.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bitstring-4.2.1-py3-none-any.whl (71.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: bitstring-4.2.1.tar.gz
  • Upload date:
  • Size: 250.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for bitstring-4.2.1.tar.gz
Algorithm Hash digest
SHA256 8abb5a661588c764bacf1a23d64c7bb57517d2841e3e6f54fb8c057119e0540d
MD5 02f0db0eb095fe013a302e47a5a9e160
BLAKE2b-256 eb57699428f6ab4c0863f8555d80ffceb3e7b385622cefdcebe5264121349986

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bitstring-4.2.1-py3-none-any.whl
  • Upload date:
  • Size: 71.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for bitstring-4.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9ae5d89072b065d640d645d37c0efcd27284b2f79f1c48cc1cd38b54e1932b4f
MD5 46f59cdb9b533d04ecd5493979fbbe17
BLAKE2b-256 590c5cee1c52f644e7627de467ddc64d5453c395e31ed8d7757a141cf4d12aed

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