⇤ ← Revision 1 as of 2005-03-31 19:13:28
2178
Comment: notes on bit manipulation in Python
|
2326
swap endianness, apply operations to groups,...
|
Deletions are marked like this. | Additions are marked like this. |
Line 10: | Line 10: |
* Switch Endianness, with different block sizes. * Apply operations in block groupings: ex: apply XOR 10101 (5 bits) repeatedly across a field. |
I'm looking for information on Python bit manipulation.
It seems that there are no modules for performing Python bit manipulation.
I personally want to be able to:
- Turn "11011000111101..." into bytes, (padded left or right, 0 or 1,) and vice versa.
- Slice ranges of bits
- Rotate bits, addressed by the bit. That is, say: "rotate bits 13-17, wrapping around the edges," or, "rotate bits 13-17, lose bits on the one side, set all new bits to 0."
- Similarly, revert regions of bits, apply logic to regions of bits, etc.,.
- Switch Endianness, with different block sizes.
- Apply operations in block groupings: ex: apply XOR 10101 (5 bits) repeatedly across a field.
The closest thing I've found is [http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/113799 ASPN: bit-field manipulation.]
I imagine that there are many more manipulations people would like to do with bits.
Manipulations
To integer.
To hex string. Note that you don't need to use x8 bits.
To character. 8 bits max.
Characters to integers, but not to strings of 1's and 0's.
Individual bits.
Research Links
this is the sort of thing we're looking for:
[http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/113799 ASPN: bit-field manipulation]
related modules:
[http://www.python.org/doc/current/lib/module-array.html array module] -- (issued with Python)
[http://www.python.org/doc/current/lib/module-struct.html struct module] -- (issued with Python)
[http://www.python.org/doc/current/lib/module-binascii.html binascii module] -- (issued with Python)
[http://pyserial.sourceforge.net/ pySerial module] -- access the serial port