Lie Ryan wrote:
>You'll find that in most cases, using integer or Boolean is enough. There >are some edge cases, which requires bit addressing for speed or memory >optimizations, in python, the usual response to that kind of optimization >requirement is to move that part of the code to C. > >If, for the more usual case, you require the bit addressing because the >data structure is more convenient to work with that way, you could use a >class that implements the __getitem__, __setitem__, and a "join" method. I had a vague feeling that this was the way to go,(see my reply to Tino) but I have been resisting, kicking and screaming, to get deeply involved in OO - Using Tkinter is enough OO for my microprocessor biased taste. >anyway, if you used str, it isn't hard to have both behavior (easy >indexing and easy joining) the bits: > >>>> a =3D '01101010' >>>> a[0], a[1] >('0', '1') >>>> a >'01101010' >>>> int(a, 2) >106 >>>> chr(int(a, 2)) >'j' >>>> def bin2int(b): return int(a, 2) ... >>>> def bin2chr(b): return chr(int(a, 2)) Thanks. This is the best I have seen up to now. I was stuck because I was insisting on storing real bits in real strings, eight bits per byte, instead of storing ascii bits and remembering about int(x,2). In fact I keep forgetting about the second argument of int... I could go with a list like this: inputs = [['10001000',''],['11110000',''],['01010101','']] Where the second entry in the list is a "changed" bit. Outputs are a bit more of a hassle - strings are immutable, so I can't write: input[1][0][3]='1' but that is easily fixed by using array.array. Thanks for the response - Hendrik -- http://mail.python.org/mailman/listinfo/python-list