chr()与ord()函数和Python中str、bytes类型的关联关系确认
关于Python中chr()、ord()与str、bytes的关系解析
你的理解完全正确!咱们把这个逻辑拆得更清楚一点:
ord()的输入与输出:
ord()只认单个字符的str类型——注意这里的str是Python 3里原生的Unicode字符串,不是经过编码后的bytes。它的作用就是把这个字符对应的Unicode码点(也就是那个整数)返回给你。比如ord('A')会返回65,ord('中')返回20013,这些都是字符对应的Unicode标准里的码点值。chr()的反向操作:
chr()刚好反过来,它接收一个整数(有效的Unicode码点),返回对应的单个字符str。比如chr(65)得到'A',chr(20013)得到'中'。为什么和
bytes没关系?bytes是字符串经过编码(比如UTF-8、GBK)后的字节序列,和Unicode码点不是一个层面的东西。如果你拿bytes里的单个元素(比如b'A'[0]),得到的是这个字节的整数值,这和ord()返回的码点在ASCII范围内碰巧一样,但本质完全不同——比如'中'用UTF-8编码是b'\xe4\xb8\xad',这里的每个字节值228、184、173和它的Unicode码点20013完全不是一回事。
简单说,ord()和chr()是在Unicode码点和Python原生str字符之间做转换,和编码后的bytes完全不搭边,你之前的理解一点没错,不是你想多了~
内容的提问来源于stack exchange,提问作者Stephen
相关产品推荐
相关产品推荐

