Python str和bytes的转换

2024年03月24日 Python教程 Python51

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'xe6x9cx80xe7x88xb1xe4xb8xadxe5x9bxbd'

从 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'xe6x9cx80xe7x88xb1xe4xb8xadxe5x9bxbd'
>>> len(b)                 # 字节个数
12
>>> type(b)
< class 'bytes'>
>>> b
b'xe6x9cx80xe7x88xb1xe4xb8xadxe5x9bxbd'
>>> a = b.decode("utf-8")  # 按照utf-8的格式进行解码,每3个字节表示一个中文字符
>>> type(a)
<class 'str'>
>>> len(a)                 # 字符个素
4
>>> a
'最爱中国'

上一节 下一节

本文链接:http://so.lmcjl.com/news/266/

展开阅读全文