
Eric Eisner wrote:
On Tue, Aug 11, 2009 at 02:16, Ron Adam<rrr@ronadam.com> wrote:
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.
The constructor for bytes currently accepts a single int as an argument, producing that many zero bytes. As far as I can tell this behavior is undocumented, but I don't know if that can be changed easily...
The first thing I did when I tried out the bytes type in 3.x was to try to convert an int to a byte via the constructor, and the current behavior surprised me.
It seems that bytes are quite different here in 2.6 and 3.0. In 2.6 and bytes is an alias for string(), so the bytes constructor behavior just converts the int to a string. ra@Gutsy:~$ python Python 2.6.2 (release26-maint, Apr 19 2009, 01:58:18) [GCC 4.3.3] on linux2 Type "help", "copyright", "credits" or "license" for more information.
bytes(123) '123' bytes <type 'str'> help(bytes)
class str(basestring) | str(object) -> string | | Return a nice string representation of the object. | If the argument is a string, the return value is the same object. | (clipped) Ron