Odd problem with converting string to Hex?
Remco Gerlich
scarblac at pino.selwerd.nl
Thu Jul 5 02:50:38 EDT 2001
Benjamin Schollnick <junkster at rochester.rr.com> wrote in comp.lang.python:
>
> I haven't tried this.... But it certainly makes sense...
>
> I was assuming, incorrectly it appears, that Python was storing it
> as a string of 3 or so characters.... After all, that's what the
> Print command was displaying....
No, it didn't. The interpreter showed it, but not with the print command!
Try it:
>>> x = '\x00\x90\x83H\x11\x0f'
>>> x
'\x00\x90\x83H\x11\x0f'
>>> print x
# In my xterm this prints the actual bytes, leaving nothing visible
>>> len(x)
6
>>> len(repr(x))
23 # Includes the '' around the string, the escaping, etc
'\x00' is a length 1 string, containing a single character, hex 0.
The interactive interpreter uses repr() to show the value of things by
default, which returns a form that could be used as a Python literal. It
needs to escape things again. As an example: chr(92) is a backslash... try
typing:
>>> chr(92)
'\\'
>>> print chr(92)
\
> I had never considered that it was being stored as a "list of
> characters", array, or whatever you'd like to call it....
>
> Although, I want to stress STR(data....), didn't give a HEX PRINTABLE
> result....
You need to explain this, no idea what you mean. str() of a tuple calls
repr() again on the internal elements, so it has to returns the escaped
forms again.
--
Remco Gerlich
More information about the Python-list
mailing list