[Python-ideas] bitwise operations on bytes
Guido van Rossum
guido at python.org
Mon Aug 10 19:36:26 CEST 2009
The struct module already handles all those -- long ints are pretty
much the only common type that it doesn't cover, because it only deals
with fixed-length values.
On Mon, Aug 10, 2009 at 10:16 AM, Ron Adam<rrr at ronadam.com> wrote:
>
>
> Mark Dickinson wrote:
>>
>> On Sat, Aug 8, 2009 at 10:31 PM, Guido van Rossum<guido at python.org> wrote:
>>>
>>> -- the struct module only handles sizes 2, 4 and 8. I can hack it by
>>> going via a hex representation:
>>>
>>> i = 10**100
>>> b = bytes.fromhex(hex(i)[2:])
>>> import binascii
>>> j = int(binascii.hexlify(b), 16)
>>> assert j == i
>>>
>>> but this is a pretty gross hack.
>>
>> The first part also doesn't work if hex(i) has odd length.
>> [py3k]:
>>
>>>>> bytes.fromhex(hex(10**99)[2:])
>>
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> ValueError: non-hexadecimal number found in fromhex() arg at position 82
>>
>> I think the fact that it's non-trivial to get this right first
>> time is further evidence that it would be useful to have
>> built-in int <-> bytes conversions somewhere.
>
> Are there going to possibly be other conversions to bytes and back? (float,
> string, struct, ...)
>
> It seems to me the type conversion to and from bytes should be on the
> encoded non-byte type, and other types including user created ones could
> follow that pattern. That may allow bytes to work with any type that has the
> required special methods to do the conversions.
>
> Then most of the methods on bytes would be for manipulating bytes in various
> ways.
>
>
> The constructor for the int type already does base and string conversions,
> extending it to bytes seems like it would be natural.
>
> int(bytes) # just like int(string)
> bytes = bytes(int) # calls int.__to_bytes__() to do the actual work.
>
>
> Ron
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
--
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-ideas
mailing list