Hi Ken, On Tue, 1 May 2018 19:22:52 +0800 Ken Hilton <kenlhil...@gmail.com> wrote: > > So I'm pretty sure everyone here is familiar with how the "bytes" object > works in Python 3. It acts mostly like a string, with the exception that > 0-dimensional subscripting (var[idx]) returns an integer, not a bytes > object - the integer being the ordinal number of the corresponding > character. > However, 1-dimensional subscripting (var[idx1:idx2]) returns a bytes > object. Example: > > >>> a = b'hovercraft' > >>> a[0] > 104 > >>> a[4:8] > b'rcra' > > Though this isn't exactly unexpected behavior (it's not possible to > accidentally do 1-dimensional subscripting and expect an integer it's a > different syntax), it's still a shame that it isn't possible to quickly and > easily subscript an integer out of it. Following up from the previous > example, The only way to get 493182234161465432041076 out of b'hovercraft' > in a single expression is as follows: > > list(__import__('itertools').accumulate((i for i in a), lambda x, y: (x > << 8) + y))[-1]
Let's see: >>> a = b'hovercraft' >>> int.from_bytes(a, 'big') 493182234161465432041076 Regards Antoine. _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/