b
คำนำหน้าหมายที่แท้จริงสตริงbytes
ถ้าคุณเห็นมันใช้ในหลาม 3 รหัสที่มาแสดงออกสร้างbytes
วัตถุไม่ปกติUnicodestr
วัตถุ หากคุณเห็นว่ามันสะท้อนอยู่ใน Python shell ของคุณหรือเป็นส่วนหนึ่งของ list, dict หรือเนื้อหาคอนเทนเนอร์อื่น ๆ คุณจะเห็นbytes
อ็อบเจ็กต์ที่แสดงโดยใช้สัญกรณ์นี้
bytes
โดยทั่วไปวัตถุจะมีลำดับของจำนวนเต็มในช่วง 0-255 แต่เมื่อเป็นตัวแทน Python จะแสดงไบต์เหล่านี้เป็นASCII codepointsเพื่อให้อ่านเนื้อหาได้ง่ายขึ้น ไบต์ใด ๆ นอกพิมพ์ช่วงของตัวอักษร ASCIIจะแสดงเป็นลำดับหนี (เช่น\n
, \x82
ฯลฯ ) ในทางกลับกันคุณสามารถใช้ทั้งอักขระ ASCII และลำดับ Escape เพื่อกำหนดค่าไบต์ สำหรับค่า ASCII จะใช้ค่าตัวเลข (เช่นb'A'
== b'\x41'
)
เนื่องจากbytes
ออบเจ็กต์ประกอบด้วยลำดับของจำนวนเต็มคุณจึงสามารถสร้างbytes
อ็อบเจกต์จากลำดับของจำนวนเต็มอื่น ๆ ที่มีค่าในช่วง 0-255 เช่นรายการ:
bytes([72, 101, 108, 108, 111])
และการสร้างดัชนีจะช่วยให้คุณกลับจำนวนเต็ม ( แต่หั่นผลิตใหม่bytes
คุ้มค่าสำหรับตัวอย่างข้างต้นvalue[0]
จะช่วยให้คุณ72
แต่value[:1]
เป็นb'H'
72 เป็นจุดรหัส ASCII สำหรับตัวใหญ่H )
bytes
แบบจำลองข้อมูลไบนารีรวมถึงข้อความที่เข้ารหัส หากbytes
ค่าของคุณมีข้อความคุณต้องถอดรหัสก่อนโดยใช้ตัวแปลงสัญญาณที่ถูกต้อง ตัวอย่างเช่นหากข้อมูลถูกเข้ารหัสเป็น UTF-8 คุณสามารถรับstr
ค่าUnicode ด้วย:
strvalue = bytesvalue.decode('utf-8')
ตรงกันข้ามจะไปจากข้อความในstr
วัตถุbytes
ที่คุณจำเป็นต้องเข้ารหัส คุณต้องตัดสินใจเกี่ยวกับการเข้ารหัสที่จะใช้ ค่าเริ่มต้นคือใช้ UTF-8 แต่สิ่งที่คุณต้องการนั้นขึ้นอยู่กับกรณีการใช้งานของคุณเป็นอย่างมาก:
bytesvalue = strvalue.encode('utf-8')
คุณยังสามารถใช้ตัวสร้างbytes(strvalue, encoding)
เพื่อทำเช่นเดียวกัน
ทั้งสองวิธีการถอดรหัสและการเข้ารหัสใช้อาร์กิวเมนต์พิเศษที่จะระบุว่าข้อผิดพลาดควรจะจัดการ
Python 2 เวอร์ชัน 2.6 และ 2.7 ยังรองรับการสร้างสตริงลิเทอรัลโดยใช้b'..'
ไวยากรณ์แบบสตริงเพื่อลดความซับซ้อนของโค้ดที่ใช้ได้กับทั้ง Python 2 และ 3
bytes
วัตถุไม่เปลี่ยนรูปเช่นเดียวกับstr
สตริง ใช้bytearray()
ออบเจ็กต์หากคุณต้องการมีค่าไบต์ที่ไม่แน่นอน