编辑:我说的是 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
?所有功能都是为 128 <= i < 256
做的是返回十六进制值吗?
最佳答案
在 Python 2.x 中,str
是一个字节序列,因此 chr()
返回一个字节的字符串并接受 0-255 范围内的值,因为这是一个字节可以表示的范围。当您打印一个字节在 128-255 范围内的字符串的 repr()
时,该字符以转义格式打印,因为没有标准的方式来表示此类字符(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/