一文搞懂 Python 中的字节字符串

字节字符串,又被称为字节串,Python 3 中新增的 bytes 类型。

字符串(str)由多个字符组成,以字符为单位进行操作。字节串(bytes)由多个字节组成,以字节为单位进行操作。bytes 和 str 除操作的数据单元不同之外,它们支持的所有方法都基本相同,bytes 也是不可变序列。

字节

字节(bytes)是计算机存储容量的一种计量单位,最常用的字节包含八位,即它包含八位(bit)的二进制数。位(bit):是计算机内部数据储存的最小单位,使用二进制数表示。习惯上用大写 B 来表示字节,即1B(字节)= 8bit(位)。

在字节串中每个数据单元都是字节,可以用一个十六进制数来表示。

b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c'

Python 中,使用 b 前缀来表示字节串。以上示例中 \xe4 就表示 1 字节,其中 \x 表示十六进制,e4 就是两位的十六进制数。

字符串是 Unicode 字符序列,而字节字符串是原始字节序列。如果要保存传输字符串,就需要把 str 编码为以字节为单位的 bytes,如果想要读取,则需要将 bytes 解码为 str。字节串可以直接保存传输,不需要编码解码。

字符串与字节串

  1. 创建字符串

在此示例中,我们使用双引号定义一个字符串“Hello World”。

>>> str1 = "Hello World"
>>> print(str1)
Hello World
  1. 创建字节串

在此示例中,我们使用 b 前缀定义一个字节串“Hello World”。

>>> byte1 = b"Hello World"
>>> print(byte1)
b'Hello World'
  1. 字节串操作
# 创建一个空的bytes
>>> byte1 = bytes()
>>> byte2 = b''
>>> byte3 = b'Hello World'
>>> print(byte3)
b'Hello World'

# 通过索引输出单个字节
>>> print(byte3[0])
72

# 通过索引输出多个字节
>>> print(byte3[1:3])
b'el'

# 使用 bytes() 函数由字符串创建字节串
>>> byte4 = bytes('你好世界',encoding='utf-8')
>>> print(byte4)
b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c'

# 调用字符串本身的 encode() 方法将字符串转换成字节串
>>> str1 = '你好世界'
>>> byte5 = str1.encode('utf-8')
>>> print(byte5)
b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c'
  1. 字节串转为字符串

decode() 方法可以将一个字节串对象转换成字符串。

>>> byte6 = b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c'
>>> str2 = byte6.decode('utf-8')
>>> print(str2)
你好世界

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!

相关文章

SQL用了两年多,分享2个最常用的小技巧

导读:SQL是所有数据从业者必须打牢的基本功之一,扎实的SQL查询和适当的调优技巧是检验SQL能力的两大重要准则。个人曾经专门花费过好多时间用于提升SQL能力,期间也刷了大量的SQL题目,在这期间也...

不允许你还不会的Python 文件与字符串处理高效技巧

掌握文件和字符串的高效处理技巧是Python编程中的重要能力。以下是一些专业级的优化技巧和实践方法:一、文件处理高效技巧1. 文件读取优化1.1 大文件逐行读取# 标准方法(内存友好) with op...

深入详解Python的比较运算

在Python编程中,比较运算是构建逻辑判断的核心基础,无论是条件控制、数据筛选还是算法逻辑,都离不开对数据的比较操作。本文将从基础概念到高级应用,全面解析Python比较运算的细节,帮助开发者深入理...

2025-05-01:第一个几乎相等子字符串的下标。用go语言,给定两个

2025-05-01:第一个几乎相等子字符串的下标。用go语言,给定两个字符串 s 和 pattern。如果字符串 x 修改 最多一个字符 之后能够变成字符串 y,则称 x 与 y 几乎相等。请你在函...

强烈推荐一个 Python 神库——Pydantic

初识 Pydantic当我第一次接触 FastAPI 时,不可避免地遇到了 Pydantic。在 FastAPI 的生态中,Pydantic 几乎是不可或缺的——它负责请求/响应数据的校验、序列化和转...

Python中 is 和 == 的区别

在 Python 中,is 和 == 都是用于比较两个对象的运算符,但它们的区别在于比较的内容不同。== 运算符用于比较两个对象的 值 是否相等。对于数字、字符串等不可变对象,== 比较的是它们的值是...