默认编码:
字符不等于字节:字符是人类能够识别的符号,而这些符号要保存到计算的存储中就需要用计算机能够识别的字节(二进制编码)来表示,其中的文本文件都是以某种特定编码的字节形式存放的:
- Python2默认编码为’ascii’,而Python3默认编码为’utf-8’
- (utf-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码,用1到6个字节编码Unicode字符.)
- 为了兼容Python2和Python3,建议在代码头部声明字符编码:-- coding:utf-8 --
查看Python3的默认编码,命令如下:
>>>import sys
>>>sys.getdefaultencoding()
'utf-8'
数据类型:
Python中的数据类型有以下三种:
- 字符串(如,‘12345’)
- 字节串(如,b’12345’)
- 数字(如,12345)
utf-8使用三个字节来表示汉字,如:
>>> u'汉'.encode('uft-8')
b'\xe6\xb1\x89'
utf-8兼容ascii,由于十六进制的前128(0x00~0x80)个数与ASCII是一一对应的关系,所以在python中,表示字节串的时候将会出现16进制与ASCII码混合出现的情况。如:
>>> b'\x25\x90\x52'
b'%\x90R'
>>> [ hex(x) for x in b'%\x90R' ]
['0x25', '0x90', '0x52']
Python默认以十进制进行显示和运算,比如:
>>> 0b10 #用二进制表示的数字
2
>>> 0o10 #用八进制表示的数字
8
>>> 0x10 #用十六进制表示的数字
16
>>> 0b10 + 0o10 + 0x10
26
字节串转数字需要用到struct模块:
>>>import struct
>>>struct.unpack('<H', b'\x00\x29')
(10496,)