介紹 Python 的位元組(bytes)函數的使用方式,並提供幾種常用的範例程式碼。
Python 的位元組(bytes)物件就是一串不可修改的序列,每個元素值都介於
0
到 255
,若要將其他的物件轉換為位元組物件,可以使用 bytes
函數,以下是 bytes
函數的使用方式與範例。
如果需要可以修改的位元組陣列,可以改用
bytearray
函數。建立位元組
若在呼叫 bytes
時只傳入一個整數值 n
,則會建立長度為 n
,並且由 null 字元組成的位元組序列:
# 建立長度為 5 的位元組 bytes(5)
b'\x00\x00\x00\x00\x00'
若傳入一個 list,則可直接轉為位元組序列:
# 將 list 轉為位元組 bytes([1, 2, 3, 4])
b'\x01\x02\x03\x04'
亦可將字串以指定的編碼方式,轉換為位元組序列:
# 將字串以 UTF-8 編碼轉為位元組 bytes("python", "utf-8")
b'python'
# 將字串以 UTF-16 編碼轉為位元組 bytes("python", "utf-16")
b'\xff\xfep\x00y\x00t\x00h\x00o\x00n\x00'
對於簡單的資料,亦可用字串實字直接建立位元組序列:
# 以字串實字建立位元組序列 b'\x01\x02\x03\x04'
b'\x01\x02\x03\x04'
位元組索引
若要取用位元組序列中的元素,可以使用索引:
# 建立位元組序列 b = b"\x01\x02\x03\x04" # 取用第一個元素 b[0]
1
迴圈處理位元組序列
我們也可以用 for
迴圈來逐一處理位元組的每個元素:
# 建立位元組序列 b = b"\x01\x02\x03\x04" # 以迴圈逐一處理位元組序列的元素 for x in b: print(x)
1 2 3 4
字串與位元組轉換
若要將位元組序列轉換為普通的字串,可以使用 str
函數:
# 建立位元組序列 b = b"python" # 位元組序列轉為字串 str(b, encoding = "UTF-8")
'python'
另外亦可使用 bytes
的 decode
函數,寫法不同但作用都相同:
# 位元組序列轉為字串 bytes.decode(b, encoding = "utf-8") # 位元組序列轉為字串 b.decode(encoding = "utf-8")
若要將普通的字串轉換為位元組序列,則可使用 bytes
函數:
# 字串 s = "python" # 字串轉為位元組序列 bytes(s, encoding = "utf8")
b'python'
另外亦可使用 str
的 decode
函數:
# 字串轉為位元組序列 str.encode(s, encoding = "utf-8") # 字串轉為位元組序列 s.encode(encoding = "utf-8")
數值陣列與位元組轉換
位元組序列可以透過 list
轉換為普通的列表(list):
# 建立位元組序列 b = b"\x01\x02\x03\x04" # 轉為列表(list) list(b)
[1, 2, 3, 4]
若要轉為 NumPy 的陣列,可以先轉為 bytearray
之後,再轉為 NumPy 陣列:
import numpy as np # 位元組序列轉為 NumPy 陣列 np.array(bytearray(b))
array([1, 2, 3, 4], dtype=uint8)