How to get the ASCII value of a character

前端 未结 6 490
天命终不由人
天命终不由人 2020-11-22 07:04

How do I get the ASCII value of a character as an int in Python?

相关标签:
6条回答
  • 2020-11-22 07:16

    The accepted answer is correct, but there is a more clever/efficient way to do this if you need to convert a whole bunch of ASCII characters to their ASCII codes at once. Instead of doing:

    for ch in mystr:
        code = ord(ch)
    

    or the slightly faster:

    for code in map(ord, mystr):
    

    you convert to Python native types that iterate the codes directly. On Python 3, it's trivial:

    for code in mystr.encode('ascii'):
    

    and on Python 2.6/2.7, it's only slightly more involved because it doesn't have a Py3 style bytes object (bytes is an alias for str, which iterates by character), but they do 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'):
    

    Encoding as a type that natively iterates by ordinal means the conversion goes much faster; in local tests on both Py2.7 and Py3.5, iterating a str to get its ASCII codes using map(ord, mystr) starts off taking about twice as long for a len 10 str than 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.

    The only downside is that the conversion is all at once, so your first result might take a little longer, and a truly enormous str would have a proportionately large temporary bytes/bytearray, but unless this forces you into page thrashing, this isn't likely to matter.

    0 讨论(0)
  • 2020-11-22 07:24

    ord(x) returns the Unicode of x.

    Since Unicode is an extension of ASCII, ord will also work for all things encoded by ASCII. Note that the returned value is in decimal. If you want it in another base, you can use

    bin(ord(x)) oct(ord(x)) hex(ord(x))

    as you see fit.

    0 讨论(0)
  • 2020-11-22 07:28

    Note that ord() doesn't give you the ASCII value per se; it gives you the numeric value of the character in whatever encoding it's in. Therefore the result of ord('ä') can be 228 if you're using Latin-1, or it can raise a TypeError if you're using UTF-8. It can even return the Unicode codepoint instead if you pass it a unicode:

    >>> ord(u'あ')
    12354
    
    0 讨论(0)
  • 2020-11-22 07:29

    To get the ASCII code of a character, you can use the ord() function.

    Here is an example code:

    value = input("Your value here: ")
    list=[ord(ch) for ch in value]
    print(list)
    

    Output:

    Your value here: qwerty
    [113, 119, 101, 114, 116, 121]
    
    0 讨论(0)
  • 2020-11-22 07:35

    You are looking for:

    ord()
    
    0 讨论(0)
  • 2020-11-22 07:39

    From here:

    function ord() would get the int value of the char. And in case you want to convert back after playing with the number, function chr() does the trick.

    >>> ord('a')
    97
    >>> chr(97)
    'a'
    >>> chr(ord('a') + 3)
    'd'
    >>>
    

    In Python 2, there is also the unichr function, returning the Unicode character whose ordinal is the unichr argument:

    >>> unichr(97)
    u'a'
    >>> unichr(1234)
    u'\u04d2'
    

    In Python 3 you can use chr instead of unichr.


    ord() - Python 3.6.5rc1 documentation

    ord() - Python 2.7.14 documentation

    0 讨论(0)
提交回复
热议问题