Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。
bytes():不可變的位元組序列
語法:
bytes(整數) # 建立指定長度的零填充 bytes
bytes(可迭代物件) # 從整數列表建立
bytes(字串, encoding) # 從字串編碼建立bytes 是不可變的位元組序列,每個元素是 0~255 的整數。常用在處理二進位資料、檔案讀寫、網路傳輸:# 建立 5 個零的 bytes
b1 = bytes(5)
print(b1) # b'\x00\x00\x00\x00\x00'
print(len(b1)) # 5
# 從整數列表建立
b2 = bytes([72, 101, 108, 108, 111])
print(b2) # b'Hello'
# 從字串編碼建立
b3 = bytes('你好', encoding='utf-8')
print(b3) # b'\xe4\xbd\xa0\xe5\xa5\xbd'
# 不帶參數 → 空 bytes
b4 = bytes()
print(b4) # b''也可以用字面值語法直接寫 bytes:
b = b'Hello'
print(type(b)) # <class 'bytes'>
print(b[0]) # 72(H 的 ASCII 碼)
print(b[1]) # 101(e 的 ASCII 碼)bytes 是不可變的,不能修改內容:
b = b'Hello'
# b[0] = 74 # TypeError: 不能修改!
# 要修改的話,可以轉成 bytearray
ba = bytearray(b)
ba[0] = 74 # 改成 'J'
print(ba) # bytearray(b'Jello')bytes 和 str 的轉換:
# str → bytes:用 encode()
text = '哈囉世界'
b = text.encode('utf-8')
print(b) # b'\xe5\x93\x88\xe5\x9b\x89\xe4\xb8\x96\xe7\x95\x8c'
# bytes → str:用 decode()
text2 = b.decode('utf-8')
print(text2) # 哈囉世界小小綜合例子
# 模擬簡單的訊息編碼與解碼
message = "Python 好好玩!"
# 編碼成 bytes
encoded = bytes(message, encoding='utf-8')
print(f"原始訊息:{message}")
print(f"編碼後:{encoded}")
print(f"長度:{len(encoded)} bytes")
# 逐一顯示每個 byte
print("每個 byte:", list(encoded))
# 解碼回字串
decoded = encoded.decode('utf-8')
print(f"解碼後:{decoded}")
print(f"還原成功:{message == decoded}")