Python 的內置函數 bytes 是一個非常重要的數據類型,用於處理二進制數據。以下是關於 bytes 類型的詳細介紹:
-
基本概念
bytes是不可變的字節序列,每個元素都是 0-255 之間的整數- 與
str類型不同,bytes直接存儲原始字節數據而非Unicode字符
-
創建方式
- 字面量語法:
b'hello'或b"\x48\x65\x6c\x6c\x6f" -
bytes()構造函數:bytes(5)創建包含5個零字節的對象bytes([72, 101, 108, 108, 111])從整數列表創建bytes('hello', encoding='utf-8')從字符串轉換
- 字面量語法:
-
常用操作
- 索引和切片:
data[0]獲取第一個字節 - 長度:
len(data)獲取字節數 - 不可變性:不能直接修改元素值
- 方法:
decode(),hex(),split()等
- 索引和切片:
-
應用場景
- 文件I/O操作(特別是二進制文件)
- 網絡通信(socket數據傳輸)
- 加密/解密操作
- 圖像/音頻等多媒體處理
- 與C語言接口交互
-
編碼轉換
- 字符串轉bytes:
'文本'.encode('utf-8') - bytes轉字符串:
b'text'.decode('utf-8') - 注意編碼一致性,避免出現編解碼錯誤
- 字符串轉bytes:
-
與bytearray比較
bytearray是可變版本,支持原位修改bytes更節省內存且線程安全- 性能差異在大多數場景下可以忽略
示例代碼:
# 創建bytes對象
data = bytes([0x48, 0x65, 0x6c, 0x6c, 0x6f]) # b'Hello'
# 文件操作示例
with open('image.jpg', 'rb') as f:
img_data = f.read() # 讀取為bytes
# 網絡通信示例
import socket
sock = socket.socket()
sock.send(b'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n')
bytes 類型是Python處理二進制數據的核心工具,理解其特性和用法對於開發涉及底層數據處理的應用程序至關重要。