【Python】【 Python中的字节与字符串】

默认编码:

字符不等于字节:字符是人类能够识别的符号,而这些符号要保存到计算的存储中就需要用计算机能够识别的字节(二进制编码)来表示,其中的文本文件都是以某种特定编码的字节形式存放的:

  1. Python2默认编码为’ascii’,而Python3默认编码为’utf-8’
  2. (utf-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码,用1到6个字节编码Unicode字符.)
  3. 为了兼容Python2和Python3,建议在代码头部声明字符编码:-- coding:utf-8 --

查看Python3的默认编码,命令如下:

>>>import sys
>>>sys.getdefaultencoding()
'utf-8'

数据类型:

Python中的数据类型有以下三种:

  1. 字符串(如,‘12345’)
  2. 字节串(如,b’12345’)
  3. 数字(如,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,)

参考文档
1. Python中的字符串与字符编码
2. Python3下的编码与进制转换总结

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章