问题:如何获取字符的ASCII值
回答 0
从这里:
函数ord()将获取char的int值。如果您想在玩完数字后再转换回去,可以使用chr()函数来解决。
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
在Python 2中,还有一个unichr
函数,返回其序数为参数的Unicode字符unichr
:
>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'
在Python 3中,您可以使用chr
代替unichr
。
回答 1
请注意,这ord()
本身并不能提供ASCII值;它以任何编码形式为您提供字符的数值。因此,ord('ä')
如果您使用的是Latin-1,则结果可以为228,如果您使用的TypeError
是UTF-8 ,则其结果可以为a 。如果您传递一个unicode,它甚至可以返回Unicode代码点:
>>> ord(u'あ')
12354
回答 2
您正在寻找:
ord()
回答 3
公认的答案是正确的,但是如果您需要一次将一大堆ASCII字符转换为它们的ASCII代码,则可以采用一种更聪明/更有效的方法。而不是做:
for ch in mystr:
code = ord(ch)
或稍快:
for code in map(ord, mystr):
您将转换为直接对代码进行迭代的Python本机类型。在Python 3上,这很简单:
for code in mystr.encode('ascii'):
在Python 2.6 / 2.7上,它涉及的只是一点点,因为它没有Py3样式的bytes
对象(bytes
是的别名str
,它是按字符迭代的),但是它们确实有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'):
编码为按序本机迭代的类型意味着转换要快得多。在Py2.7和Py3.5的本地测试中,使用进行迭代str
以获取其ASCII码map(ord, mystr)
开始关闭需要大约两倍的时间为len
10 str
比使用bytearray(mystr)
上的Py2或mystr.encode('ascii')
在PY3,并作为str
变长,乘数支付map(ord, mystr)
上升至〜6.5x-7x。
唯一的缺点是转换是一次完成的,因此您的第一个结果可能会花费更长的时间,而真正巨大的str
临时结果会成比例地增加bytes
/bytearray
,但是除非迫使您进入页面崩溃状态,否则这无关紧要。
回答 4
要获取字符的ASCII码,您可以使用 ord()
函数。
这是示例代码:
value = input("Your value here: ")
list=[ord(ch) for ch in value]
print(list)
输出:
Your value here: qwerty
[113, 119, 101, 114, 116, 121]