Getting hex value of a character

Martin v. Löwis martin at v.loewis.de
Thu Dec 12 12:27:41 EST 2002


"Dennis Reinhardt" <DennisR at dair.com> writes:

> I am trying to print the hexadecimal value of a string.  In other words, the
> string "AB" would print as "4142".  I simply cannot get the formatting
> right.  
[...]
> None of the print statements I have tried above work.  A common problem to
> many is that int cannot convert the argument given.  The result I am hoping
> for here is "hex = 67".  This must be really simple but I am not getting it
> and have consulted the indexes of 4 Python books.

You should first ask yourself why you think "AB" is related to "4142",
and not to, say, "172":

>>> 0xAB
171
>>> int("AB",16)
171
>>> "%2x" % int("AB",16)
'ab'

That is, of course, because you do not want the hexadecimal value of a
string. If you would want that, you had to interpret each digit as a
hexadecimal number (allowing only [0-9a-fA-F]).

Instead, the relationship is that the ASCII ordinal of "A" is 65, and
65 is hexadecimal 41. Python does not have a function to perform this
in one step, so you have to split it in many steps. The key
information here is that the ord function returns the ASCII ordinal of
a character. Notice it accepts only characters, i.e. strings of length
1.

This should be sufficient information to make you proceed (although I
fear others will post one-line solutions). If you get stuck, don't
hesitate to ask again; likewise, if you find a solution, feel free to
post it for us to comment.

Regards,
Martin



More information about the Python-list mailing list