I'm sort of mystified by the print hex to char conversion
davea at ieee.org
Sun Apr 19 04:48:22 CEST 2009
> I'm just really not seeing how something like x63 and/or x61 gets
> converted by 'print' to the corresponding chars in the following
> [cdalten at localhost oakland]$ python
> Python 2.4.3 (#1, Oct 1 2006, 18:00:19)
> [GCC 4.1.1 20060928 (Red Hat 4.1.1-28)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> print '\x63had'
>>>> print '\x63h\x61d'
>>>> print "\x63had"
>>>> print "\x63h\x61d"
> Does print just do this magically?
print() isn't doing anything special with these strings. It's just
sending the characters to stdout. The question is what are the characters.
Whenever you're defining a quote literal in your code, there are rules
about how characters are interpreted on their way to the string. And
these rules are different for ascii strings, for unicode strings, and
for raw strings (all prefixes to the leading quote sign. I'll just talk
about the ascii strings.
In order to let you enter characters into a string that would otherwise
be difficult (like newline, which has a special meaning, or backspace,
which is tricky to type in most text editors), the backslash is defined
as an escape character. Whatever follows the backslash is interpreted
specially. One case is the \n, which represents a newline. Another is
\t, which represents tab. Another is \xdd which is used to represent
an arbitrary code, given its hex representation. There are others.
More information about the Python-list