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.
Version 3.1 includes a documentation error fix, a bug fix in the slice assignment code, and two new methods useful for security work. As with Version 3.0, this new version should also work with both Python 2.x and Python 3.x.
Version 3.0 is a Python 3.x compliant version of the latest incarnation of the BitVector class. This version should work with both Python 2.x and Python 3.x.
The class is provided with the following operators/methods:
- __getitem__
- __setitem__
- __len__
- __iter__
- __contains__
- __getslice__
- __str__
- __int__
- __add__
- __eq__, __ne__, __lt__, __le__, __gt__, __ge__
- __or__
- __and__
- __xor__
- __invert__
- __lshift__
- __rshift__
- __add__
- count_bits
- count_bits_sparse (faster for sparse bit vectors)
- deep_copy
- divide_into_two
- gcd
- gen_rand_bits_for_prime
- gf_divide (for divisions in GF(2^n))
- gf_MI (for multiplicative inverse in GF(2^n))
- gf_multiply (for multiplications in GF(2))
- gf_multiply_modular (for multiplications in GF(2^n))
- hamming_distance
- intValue (for returning the integer value)
- isPowerOf2
- isPowerOf2_sparse (faster for sparse bit vectors)
- jaccard_distance
- jaccard_similarity
- length
- multiplicative_inverse
- next_set_bit
- pad_from_left
- pad_from_right
- permute
- rank_of_bit_set_at_index
- read_bits_from_file
- read_bits_from_fileobject
- reset
- reverse
- runs
- shift_left for non-circular left shift
- shift_right for non-circular right shift
- slice assignment
- setValue
- test_for_primality
- unpermute
- write_to_file
- write_bits_to_fileobject