Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Byte Objects เทียบกับ String ใน Python


เนื่องจากคอมพิวเตอร์จัดเก็บข้อมูลได้เฉพาะในรูปแบบไบต์ เราจึงต้องแปลงรูปแบบข้อมูลต่างๆ ให้เป็นข้อมูลไบต์ ตัวอย่างเช่น รูปภาพจะกลายเป็นไบต์และจัดเก็บด้วย PNG, JPEG ฯลฯ เพลงจัดเก็บเป็น .WAV, .MP3 ฯลฯ ซอฟต์แวร์ที่รับผิดชอบสร้างและจัดการรูปแบบเหล่านี้จะแปลงข้อมูลเป็นไบต์เพื่อจัดเก็บ ใน Python Byte Object คือลำดับของไบต์ซึ่งอ่านไม่ได้โดยมนุษย์ แต่ Character String คือลำดับของตัวอักษรซึ่งอ่านได้โดยมนุษย์ ตัวอักษรจะถูกเข้ารหัส (encode) ก่อนจัดเก็บในคอมพิวเตอร์เป็นไบต์

การเข้ารหัส (Encoding)

ก่อนที่ Character String จะถูกจัดเก็บลงดิสก์ ต้องเข้ารหัสก่อน ฟังก์ชันใน Python สำหรับเข้ารหัสสตริงคือ encode ดังตัวอย่างด้านล่าง ที่นี่เราใช้การเข้ารหัส ASCII

ตัวอย่างโค้ด

print('Best Tutorials'.encode('ASCII'))

ผลลัพธ์

การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้ -

b'Best Tutorials'

การถอดรหัส (Decoding)

เมื่ออ่านไบต์จากดิสก์ เพื่อให้อ่านได้โดยมนุษย์ ต้องถอดรหัส ใน Python เราสามารถใช้ฟังก์ชัน decode เพื่อแปลงไบต์ที่เข้ารหัสกลับเป็นสตริง

ตัวอย่างโค้ด

print(b'Best Tutorials'.decode('ASCII'))

ผลลัพธ์

การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้ -

Best Tutorials

จุดสำคัญที่ควรจดจำ:

  • Strings คือลำดับของตัวอักษร แต่ Bytes objects คือลำดับของไบต์
  • Strings อ่านได้โดยมนุษย์ แต่ Bytes อ่านได้โดยเครื่อง
  • Bytes จัดเก็บลงดิสก์โดยตรง ในขณะที่ตัวอักษรต้องเข้ารหัสก่อนจึงจะจัดเก็บลงดิสก์ได้