如何获取字符的 ASCII 值



如何在 Python 中获取字符的 ASCII 值作为int

从这里:

函数ord()获取 int 值的字符。如果你愿意玩完后转换回来数字、函数chr()就可以解决问题。

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

在 Python 2 中,还有 unichr 函数,返回序数为 unichr 参数的 Unicode 字符:

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

在Python 3中,您可以使用chr而不是unichr


ord() - Python 3.6.5rc1 文档

ord() - Python 2.7.14 文档

请注意

ord()本身不会为您提供 ASCII 值;它以任何编码为您提供字符的数值。因此,如果您使用的是拉丁语 1,则ord('ä')的结果可以是 228,如果您使用的是 UTF-8,则可能会引发TypeError。如果你向它传递一个 unicode,它甚至可以返回 Unicode 代码点:

>>> ord(u'あ')
12354

您正在寻找:

ord()

接受的答案是正确的,但是如果您需要一次将一大堆 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对象(bytesstr 的别名,按字符迭代),但它们确实有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 的本地测试中,使用 map(ord, mystr) 迭代str以获取其 ASCII 代码开始,len 10 str所需的时间大约是在 Py2 上使用 bytearray(mystr) 或在 Py3 上使用mystr.encode('ascii')的两倍, 随着str变长,为map(ord, mystr)支付的乘数上升到~6.5倍-7倍。

唯一的缺点是转换是一次性完成的,因此您的第一个结果可能需要更长的时间,而真正巨大的str将具有成比例的临时bytes/bytearray,但除非这迫使您进入页面捶打,否则这不太可能重要。

若要获取字符的 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]

相关内容

  • 没有找到相关文章

最新更新