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

โมดูล struct ใน Python

ในบทช่วยสอนนี้ เราจะเรียนรู้เกี่ยวกับโมดูล struct มาดูรายละเอียด

โมดูล struct ใช้แปลงชนิดข้อมูลพื้นฐานของ Python เป็น สตริงของไบต์ (bytes) และกลับกัน ไม่ต้องติดตั้ง เพราะเป็น built-in module ใน Python 3

โมดูล struct เกี่ยวข้องกับภาษา C เราต้องรู้สัญลักษณ์ที่ใช้ใน C แทนชนิดข้อมูลต่างๆ เพื่อทำงานกับ struct module ลองดูบางตัว

ชนิดข้อมูลFormat Character
inti
charc
strings
floatf

ลองดูวิธีแปลงชนิดข้อมูล Python เป็น bytes

struct.pack()

เมธอด struct.pack() ใช้แปลงชนิดข้อมูลเป็น bytes รับอาร์กิวเมนต์หลายตัว ตาม format string ตัวแรก

เราต้องส่ง format string พร้อม format characters ตามตารางข้างต้น ส่งอาร์กิวเมนต์ได้เท่าไหร่ก็ได้ ตัวอย่าง:

  • struct.pack('14s i', b'Tutorialspoint', 2020)
  • struct.pack('i i f 3s', 1, 2, 3.5, b'abc')

ลองแปลงตัวอย่างข้างต้นเป็น bytes

ตัวอย่าง

# นำเข้าโมดูล struct
import struct
# แปลงเป็น bytes
print(struct.pack('14s i', b'Tutorialspoint', 2020))
print(struct.pack('i i f 3s', 1, 2, 3.5, b'abc'))

ผลลัพธ์

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

b'Tutorialspoint\x00\x00\xe4\x07\x00\x00'
b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00`@abc'

struct.unpack()

มีอีกเมธอดคือ struct.unpack() แปลง bytes กลับเป็นชนิดข้อมูล Python รับ 2 อาร์กิวเมนต์ ตัวแรกเหมือน pack() ตัวที่สองคือผลลัพธ์จาก struct.pack()

เมธอด struct.unpack() คืนค่าเป็น tuple เสมอ

ตัวอย่าง

# นำเข้าโมดูล struct
import struct
# แปลงเป็น bytes
converted_bytes = struct.pack('14s i', b'Tutorialspoint', 2020)
# แปลงกลับเป็นชนิดข้อมูล Python
print(struct.unpack('14s i', converted_bytes))

ผลลัพธ์

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

(b'Tutorialspoint', 2020)

สรุป

struct ใช้ pack/unpack แปลงข้อมูล Python <-> bytes สำหรับ binary data หากมีข้อสงสัย กรุณาแจ้งในส่วนความคิดเห็น