Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Byte Objects vs String trong Python


Máy tính chỉ lưu trữ byte. String (str) là dãy ký tự Unicode (đọc được bởi người). Bytes (bytes) là dãy byte giá trị 0-255 (đọc được bởi máy). Cần encode để str → bytes, decode để bytes → str.

Encoding (str → bytes)

text = 'Best Tutorials'
encoded = text.encode('ASCII')  # hoặc 'utf-8'
print(encoded)        # b'Best Tutorials'
print(type(encoded))  # 

Decoding (bytes → str)

data = b'Best Tutorials'
decoded = data.decode('ASCII')
print(decoded)        # Best Tutorials
print(type(decoded))  # 

Bảng so sánh

Đặc điểmString (str)Bytes (bytes)
Nội dungKý tự UnicodeByte (0-255)
Đọc đượcNgườiMáy
Lưu trữ diskCần encode trướcLưu trực tiếp
Tạo literal'abc' hoặc "abc"b'abc'
ImmutableCóCó

Encoding phổ biến

  • UTF-8: Chuẩn事实上, hỗ trợ mọi Unicode, khuyên dùng mặc định.
  • ASCII: Chỉ 128 ký tự đầu, lỗi nếu có ký tự khác.
  • Latin-1 (ISO-8859-1): 256 ký tự, map 1-1 byte.

Kết luận

Luôn encode/decode tường minh với encoding rõ ràng (ưu tiên UTF-8). Không giả định bytes là text.