Terry Reedy wrote: > | It'd be useful and more efficient if the new buffer type would support > | the bit wise operations directly: > | > | >>> orig_data &= 0x1F > | TypeError: unsupported operand type(s) for &=: 'bytes' and 'int' > > This sort of broadcast behavior seems like numpy territory to me. Or > better for a buffer subclass. Write it first in Python, using loops like > above (partly for documentation and other implementations), then in C when > interest and usage warrents.
The C implementation of the bit wise operations for buffer() gains a large speed improvement over the Python implementation. I'm not sure if Guido would like it and I don't have a use case yet but it sounds like a useful addition to the new buffer() type: buffer &= smallint buffer |= smallint buffer ^= smallint newbuffer = buffer & smallint newbuffer = buffer | smallint newbuffer = buffer ^ smallint I'm willing to give it a try and implement it if people are interested in it. I have an use case for another feature but that's surely out of the scope for the Python core. For some algorithms especially cryptographic algorithms I could use a bytes type which contains larger elements than a char (unsigned int8) and which does overflow (255 + 1 == 0). for b in bytes(b"....", wordsize=32, signed=True): ... Again, it's just a pipe dream and I tend to say that it doesn't belong into the core. > > | >>> orig_data &= b"\x1F" > | TypeError: unsupported operand type(s) for &=: 'bytes' and 'bytes' > > Ugh is my response. Stick with the first ;-). Ugh, too :) Christian _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com