什么是 bytes?
在 Python 中,bytes 是一种不可变的字节序列,常用于处理二进制数据,如文件读取、网络通信或加密操作。
将 bytes 转换为整数(int)是解析底层数据结构的关键步骤。
方法一:使用 int.from_bytes()
这是 Python 3.2+ 推荐的方式,语法简洁且功能强大。
# 示例:小端序(little-endian)
data = b'\x01\x00'
num = int.from_bytes(data, byteorder='little')
print(num) # 输出: 1
# 示例:大端序(big-endian)
num = int.from_bytes(data, byteorder='big')
print(num) # 输出: 256
参数说明:
byteorder:指定字节序,可选'big'或'little'。signed:是否为有符号整数,默认False。
# 有符号整数示例
data = b'\xff\x7f'
num = int.from_bytes(data, byteorder='little', signed=True)
print(num) # 输出: 32767
方法二:使用 struct 模块
适用于固定长度的数据解析,常用于处理 C 结构体或协议数据。
import struct
# 解析2字节无符号整数(小端)
data = b'\x01\x00'
num = struct.unpack('i', data)[0]
print(num) # 输出: 1
格式符说明:< 表示小端,> 表示大端;H 为无符号短整型,i 为有符号整型。
常见应用场景
- 解析网络协议中的字段(如 TCP/UDP 头部)
- 读取二进制文件(如图像、音频元数据)
- 加密/解密过程中的数据转换
- 嵌入式系统与传感器通信
注意事项
⚠️ 字节序(Endianness)必须与数据来源一致,否则结果会错误!
⚠️ 使用 int.from_bytes() 时注意字节长度,过长可能导致内存问题(尽管 Python 支持任意精度整数)。
在线演示(简化版)
输入十六进制字节(如 0100),选择字节序,查看转换结果: