编辑:我说的是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/