Python chr() 和 ord()

Python的内置函数chr()用于将Integer转换为Character,而函数ord()用于执行相反的操作,即将Character转换为Integer

让我们快速浏览一下这两个函数并了解如何使用它们。


chr() 函数

句法

它接受一个整数i并将其转换为一个字符c,因此它返回一个字符串。

格式:

c = chr(i)

这是一个演示相同内容的示例:

# Convert integer 65 to ASCII Character ('A')
y = chr(65)
print(type(y), y)
 
# Print A-Z
for i in range(65, 65+25):
    print(chr(i), end = " , ")

输出

<class 'str'> A
A , B , C , D , E , F , G , H , I , J , K , L , M , N , O , P , Q , R , S , T , U , V , W , X , Y , Z

参数的有效范围是从 0 到 1,114,111(十六进制为 0x10FFFF)。 ValueError如果整数i超出该范围,则会引发该错误。

让我们用一些例子来验证一下

print(chr(-1))

这将引发一个ValueError.

ValueError: chr() arg not in range(0x110000)
start = 0
end = 1114111
 
try:
    for i in range(start, end+2):
        a = chr(i)
except ValueError:
    print("ValueError for i =", i)

输出

ValueError for i = 1114112

ord() 函数

ord ()函数采用单个 Unicode 字符的字符串参数并返回其整数 Unicode 代码点值。它的作用与chr().

句法

这需要一个 Unicode 字符(长度为 1 的字符串)并返回一个整数,因此格式为:

i = ord(c)

为了验证它是否执行与 相反的操作chr(),让我们使用一些示例来测试该函数。

# Convert ASCII Unicode Character 'A' to 65
y = ord('A')
print(type(y), y)
 
alphabet_list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
 
# Print 65-90
for i in alphabet_list:
    print(ord(i), end = " , ")

输出

<class 'int'> 65
65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 ,

TypeError如果输入字符串的长度不等于 1,则会引发 a 。

y = ord('Hi')

输出

TypeError: ord() expected a character, but string of length 2 found

传递十六进制数据

我们还可以将以其他常见基数表示的整数传递给chr()ord(),例如十六进制格式(基数 16)

在 Python 中,我们可以通过在整数前面加上 来使用十六进制0x,前提是它在整数值的 32/64 位范围内。

>>> print(hex(18))
'0x12'
>>> print(chr(0x12))
'\x12'
>>> print(ord('\x12'))
18
>>> print(int('\x12'))
18

我们将十六进制格式的整数18chr()传递给,它返回一个十六进制的0x12我们将其传递给chr()并用于ord()取回我们的整数。

请注意,我们也可以使用 获取整数int(),因为单个字符串也是一个字符串,它可以是上述函数的有效参数。


结论

在本文中,我们学习了如何使用整数chr()并将ord()其转换为字符,反之亦然。


参考