Python str和bytes的转换

在 Python 3 中同时支持 str 类型和 bytes 两种类型,它们之间是可以相互转换的。如从 str 转换成 bytes,可以使用 encode() 成员函数。
>>> a = "abc"
>>> a
'abc'
>>> b = a.encode("utf-8")
>>> type(b)
<class 'bytes'>
下面的代码说明了带有中文的 str 类型是如何转换成 bytes 类型的。
>>> a = "最爱中国"         # str类型
>>> len(a)                 # 长度为4,4个字符
4
>>> type(a)                # 类型
<class 'str'>
>>> b = a.encode("utf-8")  # 将其转换成str类型,方式是utf-8
>>> type(b)
<class 'bytes'>          
>>> len(b)                 # 字节个数为12,每个中文在utf-8中用3个字节表示
12
>>> b                      # 各个字节的内容
b'\xe6\x9c\x80\xe7\x88\xb1\xe4\xb8\xad\xe5\x9b\xbd'
从 bytes 类型转换成 str 类型可以使用成员函数 decode(),下面的代码说明了普通的拉丁字母是如何进行转换的。
>>> b = b"abc"
>>> type(b)
<class 'bytes'>
>>> len(b)
3
>>> a = b.decode("utf-8")
>>> type(a)
<class 'str'>
>>> len(a)
3
>>> a
'abc'
下面的代码说明了成员函数 decode() 如何将 bytes 类型转换成含中文字符的 str 类型。
>>> b = b'\xe6\x9c\x80\xe7\x88\xb1\xe4\xb8\xad\xe5\x9b\xbd'
>>> len(b)                 # 字节个数
12
>>> type(b)
< class 'bytes'>
>>> b
b'\xe6\x9c\x80\xe7\x88\xb1\xe4\xb8\xad\xe5\x9b\xbd'
>>> a = b.decode("utf-8")  # 按照utf-8的格式进行解码,每3个字节表示一个中文字符
>>> type(a)
<class 'str'>
>>> len(a)                 # 字符个素
4
>>> a
'最爱中国'