首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >chr(128)的意义是什么..Python中的chr(255)?

问chr(128)的意义是什么..Python中的chr(255)?
EN

Stack Overflow用户
提问于 2014-11-20 07:46:43
回答 3查看 15.6K关注 0票数 10

编辑:我说的是Python2.7中的行为。

chr函数将0到127之间的整数转换为ASCII码字符。例如。

代码语言:javascript
复制
>>> chr(65)
'A'

我知道这在某些情况下是如何有用的,并且我理解为什么它涵盖了0..127,7位ASCII范围。

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

如果chr采取另一种观点,我会理解的。

代码语言:javascript
复制
>>> chr(228, encoding='iso-8859-1') # hypothetical
'ä'

但是,没有这样的选项:

代码语言:javascript
复制
chr(i) -> character

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

我的问题是:为i > 255而不是i > 127提升ValueError的意义是什么?函数对128 <= i < 256所做的一切就是返回十六进制值?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-20 07:59:46

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

代码语言:javascript
复制
unicode(chr(200), encoding="latin1")

在Python3.x中,str是一个Unicode字符序列,而chr()使用的范围要大得多。字节由bytes类型处理。

票数 11
EN

Stack Overflow用户

发布于 2014-11-20 08:00:01

我知道你在说什么,但这不正确。在Python3.4中,chr被记录为:

返回表示其Unicode代码点为整数i的字符的字符串。

下面是一些例子:

代码语言:javascript
复制
>>> chr(15000)
'㪘'
>>> chr(5000)
'ᎈ'

在Python 2.x中,它是:

返回一个字符组成的字符串,其ASCII码是整数i。

chr函数在Python语言中已经存在了很长一段时间,我认为对各种编码的理解是在最近的版本中才发展起来的。从这个意义上说,支持基本ASCII表并返回128 - 255范围内的扩展ASCII集的十六进制值是有意义的。

即使是ASCII码集也只被定义为128个字符,而不是256个字符,因此没有(过去没有)一种标准的、可接受的方式让ord()为这些输入值返回答案。

票数 0
EN

Stack Overflow用户

发布于 2014-11-20 08:32:29

请注意,python 2字符串处理已中断。这也是我推荐改用python 3的原因之一。

在python 2中,string类型被设计为同时表示文本和二进制字符串。因此,chr()用于将整数转换为字节。它实际上与文本、ASCII或ISO-8859-1无关。它是一个二进制字节流:

代码语言:javascript
复制
 binary_command = chr(100) + chr(200) + chr(10)
 device.write(binary_command)
 etc()

在python2.7中,添加bytes()类型是为了与python3向前兼容,并将其映射到str()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27029241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档