On Mar 1, 12:46 pm, "Bart Ogryczak" <[EMAIL PROTECTED]> wrote: > > This solution looks nice, but how does it work? I'm guessing > > struct.unpack will provide me with 8 bit bytes > > unpack with 'B' format gives you int value equivalent to unsigned char > (1 byte). > > > (will this work on any system?) > > Any system with 8-bit bytes, which would mean any system made after > 1965. I'm not aware of any Python implementation for UNIVAC, so I > wouldn't worry ;-) > > > How does count1 work exactly? > > 1,2,4,8,16,32,64,128 in binary are > 1,10,100,1000,10000,100000,1000000,10000000 > x&1 == 1 if x has first bit set to 1 > x&2 == 2, so (x&2>0) == True if x has second bit set to 1 > ... and so on. > In the context of int, True is interpreted as 1, False as 0.
Thanks Bart. That's perfect. The other suggestion was to precompute count1 for all possible bytes, I guess that's 0-256, right? Thanks again everyone for the help. -Greg -- http://mail.python.org/mailman/listinfo/python-list