[Python-ideas] String and bytes bitwise operations
Antoine Pitrou
solipsis at pitrou.net
Thu May 17 09:49:09 EDT 2018
Indeed, at this point Numpy sounds like the ideal solution for such use
cases.
Regards
Antoine.
On Thu, 17 May 2018 13:06:59 +0200
Stephan Houben <stephanh42 at gmail.com>
wrote:
> Seems you want numpy:
>
> >>> import numpy
> >>> numpy.frombuffer(b"Hello", dtype=numpy.uint8) ^
> numpy.frombuffer(b"World", dtype=numpy.uint8)
> array([31, 10, 30, 0, 11], dtype=uint8)
>
> Stephan
>
> 2018-05-17 12:53 GMT+02:00 Ken Hilton <kenlhilton-Re5JQEeQqe8AvxtiuMwx3w at public.gmane.org>:
>
> > Hi all,
> >
> > We all know the bitwise operators: & (and), | (or), ^ (xor), and ~ (not).
> > We know how they work with numbers:
> >
> > 420 ^ 502
> >
> > 110100100
> > 111110110
> > == XOR ==
> > 001010010
> > = 82
> >
> > But it might be useful in some cases to (let's say) xor a string (or
> > bytestring):
> >
> > HELLO ^ world
> >
> > 01001000 01000101 01001100 01001100 01001111
> > 01110111 01101111 01110010 01101100 01100100
> > =================== XOR ====================
> > 00111111 00101010 00111110 00100000 00101011
> > = ?*> +
> >
> > Currently, that's done with this expression for strings:
> >
> > >>> ''.join(chr(ord(a) ^ ord(b)) for a, b in zip('HELLO', 'world'))
> > '?*> +'
> >
> > and this expression for bytestrings:
> >
> > >>> bytes(a ^ b for a, b in zip(b'HELLO', b'world'))
> > b'?*> +'
> >
> > It would be much more convenient, however, to allow a simple xor of a
> > string:
> >
> > >>> 'HELLO' ^ 'world'
> > '?*> +'
> >
> > or bytestring:
> >
> > >>> b'HELLO' ^ b'world'
> > b'?*> +'
> >
> > (All of this applies to other bitwise operators, of course.)
> > Compatibility issues are a no-brainer - currently, bitwise operators for
> > strings raise TypeErrors.
> >
> > Thanks.
> >
> > Suggesting,
> > Ken
> > Hilton
> > ;
> >
> > _______________________________________________
> > Python-ideas mailing list
> > Python-ideas at python.org
> > https://mail.python.org/mailman/listinfo/python-ideas
> > Code of Conduct: http://python.org/psf/codeofconduct/
> >
> >
>
More information about the Python-ideas
mailing list