Python 3.x and bytes
Ethan Furman
ethan at stoneleaf.us
Tue May 17 16:20:45 EDT 2011
Felipe Bastos Nunes wrote:
> 2011/5/17 Ethan Furman wrote:
>>
>> In Python 3 one can say
>>
>> --> huh = bytes(5)
>>
>> Since the bytes type is actually a list of integers, I would have
>> expected this to have huh being a bytestring with one element -- the
>> integer 5. Actually, what you get is:
>>
>> --> huh
>> b'\x00\x00\x00\x00\x00'
>>
>> or five null bytes. Note that this is an immutable type, so you
>> cannot go in later and say
>>
>> --> huh[3] = 9
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> TypeError: 'bytes' object does not support item assignment
>>
>>
>> So, out of curiosity, does anyone actually use this, um, feature?
>
> They accept .replace(b"00", b"12") for example.
So they do. Although that particular example doesn't work since b'0' is
the integer 48...
--> huh.replace(b'00',b'12')
b'\x00\x00\x00\x00\x00'
The big question, though, is would you do it this way:
some_var = bytes(23).replace(b'\x00', b'a')
or this way?
some_var = bytes(b'a' * 23)
~Ethan~
More information about the Python-list
mailing list