在《Python的编码与解码初探》中,对Python的编码知识稍做了一点研究,本文再深入一些,将字符编码以及不同进制的关系梳理一下。
1. ASCII和Unicode编码
先来看看ASCII和Unicode编码的一个例子:
- 字母
A
用ASCII编码是十进制的65
,二进制的01000001
; - 字符
0
用ASCII编码是十进制的48
,二进制的00110000
,注意字符'0'
和整数0
是不同的; - 汉字
中
已经超出了ASCII编码的范围,用Unicode编码是十进制的20013
,二进制的01001110 00101101
。
Python使用chr()
内置函数创建单字符Unicode字符串,该函数采用整数,并返回长度为1的包含相应码位的Unicode字符串。反向操作是内置ord()
函数,它使用一个字符的Unicode字符串并返回码位值。
>>> ord('A')
65
>>> ord('0')
48
>>> ord('中')
20013
>>> chr(65)
'A'
>>> chr(48)
'0'
>>> chr(20013)
'中'
ASCII编码是1个字节,而Unicode编码通常是2个字节,如果把ASCII编码的A
用Unicode编码,只需要在前面补0
就可以,因此,A<