Efficient Bit addressing in Python.
Tino Wildenhain
tino at wildenhain.de
Thu Oct 9 07:49:34 EDT 2008
Hi,
Hendrik van Rooyen wrote:
> Is there a canonical way to address the bits in a structure
> like an array or string or struct?
>
> Or alternatively, is there a good way to combine eight
> ints that represent bits into one of the bytes in some
> array or string or whatever?
>
> It seems to me that there is a dilemma here :
>
> if you can write:
>
> bit3 = 1
>
> Then you have to jump through hoops to get
> bit0 through bit7 into some byte that you can send
> to an i/o routine.
>
> On the other hand, if you keep the bits "in" the
> byte, then you can write:
>
> byte[3] = '\x7e'
>
> but you have to jump through hoops to get at
> the individual bits.
>
> Is there a "best" way?
>
> It would be nice to be able to write:
>
> if io.byte2.bit3:
> do_something()
>
> if io.byte2 == alarm_value:
> do_something_else()
>
> where:
>
> io.byte2 & 8 "is" io.byte2.bit3
byte1 byte2? this does not look very practical
to me. In the simplest form of storing
your values in a text string, you could just
use ord() to get the byte value and
operate on it with 1<<0 1<<1 1<<3 and so on.
If you want, put a module in which defines the
constants
bit1=1<<0
bit2=1<<1
and so on and use it via
if byte & bit1: ...
more efficiently for operations on really big
bit strings is probably just using integers.
HTH
Tino
> Is this possible?
>
> - Hendrik
>
> --
> http://mail.python.org/mailman/listinfo/python-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3241 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://mail.python.org/pipermail/python-list/attachments/20081009/a9ceb113/attachment.bin>
More information about the Python-list
mailing list