A pure-Python memory-efficient packed representation for bit arrays
Project description
This class presents a pure-Python memory efficient packed representation for bit arrays.
Changes introduced in version 1.3: (1) One more constructor mode included: When initializing a new bit vector with an integer value, you can now also specify a size for the bit vector. The constructor zero-pads the bit vector from the left with zeros. (2) The BitVector class now supports ‘if x in y’ syntax to test if the bit pattern ‘x’ is contained in the bit pattern ‘y’. (3) Improved syntax to conform to well-established Python idioms. (4) What used to be a comment before the beginning of each method definition is now a docstring.
Changes introduced in version 1.2: (1) one more constructor mode: a bit vector can now be constructed directly from a bitstring; (2) rich comparison operators overloaded; (3) minimal length bit vectors constructed from int values; (4) methods provided for extending a bit vector from the left and from the right; (5) a unittest based testing framework incorporated in the package; (6) additional debugging in code and in package setup.
Changes introduced in version 1.1.1: (1) peek feature incorporated in block reads from disk files; (2) it is now possible to construct zero-sized bit vectors.
The class supports the following operators/methods:
__getitem__
__setitem__
__len__
__getslice__
__str__
__iter__
__contains__
__int__
__add__
__eq__, __ne__, __lt__, __le__, __gt__, __ge__
‘|’ for bitwise or
‘&’ for bitwise and
‘^’ for bitwise xor
‘~’ for bitwise inversion
‘<<’ for circular shift to the left
‘>>’ for circular shift to the right
‘+’ for concatenation
intValue(), __int__ for returning the integer value
divide_into_two
permute
unpermute
pad_from_left
pad_from_right
read_bits_from_file
write_to_file
read_bits_from_fileobject
write_bits_to_fileobject