编辑:我说的是Python 2.7中的行为。
chr函数将0到127之间的整数转换为ASCII字符。例如。

>>> chr(65)
'A'

我了解到它在某些情况下是有用的,并且我理解了为什么它覆盖了0..127(7位ASCII范围)。

该函数还接受128..255中的参数。对于这些数字,它仅返回参数的十六进制表示形式。在此范围内,根据使用ISO-8859标准的哪个部分,不同的字节表示不同的含义。

我知道chr是否接受另一个参数,例如
>>> chr(228, encoding='iso-8859-1') # hypothetical
'ä'

但是,没有这样的选择:
chr(i) -> character

Return a string of one character with ordinal i; 0 <= i < 256.

我的问题是:提高ValueError而不是i > 255的意义是什么? i > 127的所有功能都是返回十六进制值吗?

最佳答案

在Python 2.x中,str是字节序列,因此chr()返回一个字节的字符串,并接受0-255范围内的值,因为这是可以用字节表示的范围。当您打印一个字符串的repr(),其字节的范围在128-255之间时,该字符将以转义格式打印,因为没有标准的方式来表示此类字符(ASCII仅定义了0-127)。您可以使用unicode()将其转换为Unicode,并指定源编码:

unicode(chr(200), encoding="latin1")

在Python 3.x中,str是Unicode字符序列,而chr()的使用范围更大。字节由bytes类型处理。

关于python - Python中的chr(128).. chr(255)有什么意义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27029241/

10-12 18:25