python二进制类型 (Binary Types)

简介: 【8月更文挑战第3天】

image.png
在Python中,处理二进制数据通常涉及几种不同的类型和操作。二进制数据是计算机直接以二进制形式(即0和1的序列)存储的信息,它是所有非文本数据(如图像、音频、视频文件等)的底层表示。Python通过几种不同的方式支持二进制数据的处理。

1. 字节串(Bytes)

字节串(Bytes)是Python 3中引入的一种不可变序列类型,用于存储二进制数据。与字符串(str)类似,但字符串用于存储文本数据(即Unicode字符的序列),而字节串则用于存储二进制数据(即字节的序列)。

创建字节串

  • 使用bytes()函数或字面量语法(前缀为b)。
# 使用bytes()函数
b = bytes([1, 2, 3])  # 创建一个字节串,包含三个字节,分别对应ASCII码中的SOH, STX, ETX

# 使用字面量语法
b_literal = b'\x01\x02\x03'  # 使用十六进制表示相同的字节串

print(b)  # 输出: b'\x01\x02\x03'
print(b_literal)  # 输出: b'\x01\x02\x03'

2. 字节数组(ByteArray)

字节数组(bytearray)是另一种用于存储二进制数据的类型,但它与字节串(bytes)的主要区别在于它是可变的。这意味着你可以修改字节数组中的元素,而字节串一旦创建就不可更改。

创建字节数组

  • 使用bytearray()函数。
ba = bytearray([1, 2, 3])  # 创建一个字节数组
print(ba)  # 输出: bytearray(b'\x01\x02\x03')

# 修改字节数组
ba[1] = 4  # 将第二个字节修改为4(ASCII码中的EOT)
print(ba)  # 输出: bytearray(b'\x01\x04\x03')

3. 内存视图(MemoryView)

memoryview类型允许你创建一个指向数组(如字节串或字节数组)的缓冲区的“视图”。这不会创建数据的副本,而是允许你以不同的方式(如不同的切片或格式)访问同一数据。这对于处理大型数据集时减少内存使用和提高效率特别有用。

使用内存视图

b = b'hello'
m = memoryview(b)
print(m[0])  # 访问第一个字节
print(m[0:3])  # 访问前三个字节的视图

# 修改底层数据(如果底层数据是可变的)
ba = bytearray(b'hello')
mv = memoryview(ba)
mv[0] = ord('H')  # 修改第一个字节
print(ba)  # 输出: bytearray(b'Hello')

4. 处理二进制数据

在Python中,处理二进制数据还涉及各种文件操作(如读写二进制文件)、网络通信(发送和接收二进制数据)、以及使用第三方库(如struct模块进行二进制数据的打包和解包)等。

通过这些工具和类型,Python能够高效地处理各种形式的二进制数据,使其成为处理复杂数据应用的强大工具。

目录
相关文章
|
28天前
|
SQL 机器学习/深度学习 算法
【python】python指南(五):静态类型注解之List
【python】python指南(五):静态类型注解之List
24 0
【python】python指南(五):静态类型注解之List
|
28天前
|
SQL 算法 Java
【python】python指南(四):typing静态类型注解综述
【python】python指南(四):typing静态类型注解综述
24 0
【python】python指南(四):typing静态类型注解综述
|
28天前
|
SQL 分布式计算 算法
【python】python指南(十一):静态类型注解之Optional
【python】python指南(十一):静态类型注解之Optional
24 0
|
28天前
|
SQL 分布式计算 算法
【python】python指南(十):静态类型注解之Union
【python】python指南(十):静态类型注解之Union
26 0
|
12天前
|
索引 Python 容器
为什么Python中会有集合set类型?
为什么Python中会有集合set类型?
|
13天前
|
Python
Python变量的作用域_参数类型_传递过程内存分析
理解Python中的变量作用域、参数类型和参数传递过程,对于编写高效和健壮的代码至关重要。正确的应用这些概念,有助于避免程序中的错误和内存泄漏。通过实践和经验积累,可以更好地理解Python的内存模型,并编写出更优质的代码。
10 2
|
25天前
|
存储 索引 Python
Python中的str类型
Python中的str类型
|
25天前
|
存储 程序员 C++
Python中的“Short”类型模拟与理解
Python中的“Short”类型模拟与理解
|
1月前
|
机器学习/深度学习 数据采集 算法
【python】python基于微博互动数据的用户类型预测(随机森林与支持向量机的比较分析)(源码+数据集+课程论文)【独一无二】
【python】python基于微博互动数据的用户类型预测(随机森林与支持向量机的比较分析)(源码+数据集+课程论文)【独一无二】
|
12天前
|
Python
下一篇
DDNS