python中的bytes和str学习

发布时间 2023-09-24 13:26:33作者: lypbendlf

转自:https://blog.csdn.net/lyb3b3b/article/details/74993327

1、介绍

UTF-8编码规定英文字母系列用1个字节表示,汉字用3个字节表示等等。因此,它兼容ASCII,可以解码早期的文档。

>>> s = "中文"
>>> s
'中文'
>>> type(s)
<class 'str'>
>>> b = bytes(s, encoding='utf-8') #编码的时候要指定编码方式
>>> b
b'\xe4\xb8\xad\xe6\x96\x87'     #\x 代表是十六进制,共有6个十六进制数,即6个字节,每个占用1字节8位,所以每个汉字是3字节编码
>>> type(b)
<class 'bytes'>

b实际上是一串01的组合,但为了在ide环境中让我们相对直观的观察,它被表现成了b'\xe4\xb8\xad\xe6\x96\x87'这种形式,开头的b表示这是一个bytes类型。

字符串类str里有一个encode()方法,它是从字符串向比特流的编码过程。而bytes类型恰好有个decode()方法,它是从比特流向字符串解码的过程。(都需要指定编码方式)

  1. 使用bytes类型,实质上是告诉Python,不需要它帮你自动地完成编码和解码的工作,而是用户自己手动进行,并指定编码格式。