In Python, how can I get the ASCII value of a character as an int?
Asked by Matt
>>> ord('a') 97 >>> chr(97) 'a' >>> chr(ord('a') + 3) 'd' >>>
The unichr method in Python 2 returned the Unicode character whose ordinal was the unichr argument:
>>> unichr(97) u'a' >>> unichr(1234) u'\u04d2'
You can use chr instead of unichr in Python 3.
Python 3.6.5rc1 documentation for ord()
Python 2.7.14 documentation for ord()
Answered by Matt J
Note that ord() does not return the ASCII value; instead, it returns the character’s numeric value in whatever encoding it is in. If you’re using Latin-1, the result of ord(‘ä’) can be 228; if you’re using UTF-8, it can produce a TypeError. If you supply it a unicode: parameter, it will return the Unicode codepoint instead.
>>> ord(u'あ') 12354
Answered by Ignacio Vazquez-Abrams
What you’re looking for is:
Answered by Jacob Krall
The approved answer is correct, but if you need to convert a large number of ASCII characters to their ASCII codes at once, there is a more clever/efficient way to do it. rather than doing:
for ch in mystr: code = ord(ch)
or the significantly quicker version:
for code in map(ord, mystr):
You transform the code to Python native types, which iterate it directly. It’s simple in Python 3:
for code in mystr.encode('ascii'):
It’s just slightly more complicated in Python 2.6/2.7 because it lacks a Py3-style bytes object (bytes is an alias for str, which iterates by character), but it does have bytearray:
# If mystr is definitely str, not unicode for code in bytearray(mystr): # If mystr could be either str or unicode for code in bytearray(mystr, 'ascii'):
Iterating a str to get its ASCII codes using map(ord, mystr) takes around twice as long for a len 10 str as using bytearray(mystr) on Py2 or mystr.encode(‘ascii’) on Py3, and as the str gets longer, the multiplier paid for map(ord, mystr) rises to 6.5x-7x in local tests on both Py2.7 and Py3.5.
The main drawback is that the conversion happens all at once, so your initial result would take a bit longer, and a genuinely massive str would have a similarly large temporary bytes/bytearray, but this is unlikely to be an issue until you’re forced into page thrashing.
Answered by ShadowRanger
The ord() function can be used to obtain a character’s ASCII code.
As an example, consider the following code:
value = input("Your value here: ") list=[ord(ch) for ch in value] print(list)
Your value here: qwerty [113, 119, 101, 114, 116, 121]
Answered by Indi
Post is based on https://stackoverflow.com/questions/227459/how-to-get-the-ascii-value-of-a-character