Như đã thảo luận trước đó, cấu trúc trong Python thực hiện chuyển đổi các giá trị Python và cấu trúc C được biểu diễn ở dạng đối tượng byte Python
Cú pháp chung của Struct trong Python
struct.module[formatString, buffer, ...]
Mô-đun đề cập đến mô-đun được sử dụng để chuyển đổi giữa các cấu trúc C và giá trị Python
Cấu trúc trong Python sử dụng chuỗi định dạng dưới dạng mô tả nhỏ gọn về bố cục của cấu trúc C và chuyển đổi dự kiến sang/từ các giá trị Python
Chuỗi định dạng là gì?
Chuỗi định dạng là cơ chế được sử dụng để chỉ định bố cục dự kiến khi đóng gói và giải nén dữ liệu. Chúng được xây dựng từ các Ký tự định dạng, xác định loại dữ liệu được đóng gói/giải nén. Ngoài ra, có các ký tự đặc biệt để kiểm soát Thứ tự byte, Kích thước và Căn chỉnh
- Bộ đệm được truyền dưới dạng đối số cho nhiều cấu trúc trong Python. Bộ đệm được sử dụng để chỉ đối tượng được sử dụng trong việc thực hiện các giao thức bộ đệm. Các đối tượng này được sử dụng để thực hiện các giao thức đệm ở dạng đọc được hoặc đọc được.
Mô-đun cấu trúc trong Python
Trong phần này, chúng ta sẽ đi qua một số mô-đun cấu trúc trong Python
cấu trúc. đóng gói[]
cấu trúc. pack[] mô-đun trong Python được sử dụng để trả về một đối tượng byte bao gồm các giá trị được tải dựa trên cách chuỗi định dạng
Các đối số phải khớp chính xác với các giá trị theo yêu cầu của định dạng
cú pháp
struct.pack[formatString, v1, v2, ...]
cấu trúc. giải nén[]
cấu trúc. unpack[] mô-đun trong Python được sử dụng để giải nén bộ đệm từ đầu tại vị trí bù theo cách chuỗi định dạng. cấu trúc. giải nén [] mô-đun trả về một tuple
Kích thước của bộ đệm tính bằng byte, bắt đầu từ vị trí bù, ít nhất phải bằng kích thước theo yêu cầu của định dạng, như được phản ánh bởi calcsize[]
cú pháp
struct.unpack_from[formatString, /, buffer, offset=0]
cấu trúc. vôi hóa[]
cấu trúc. mô-đun calcsize[] được sử dụng để trả về kích thước của cấu trúc tương ứng với cách chuỗi định dạng. cấu trúc. calcsize[] có thể được sử dụng với các mô-đun như struct. giải nén_from[] hoặc cấu trúc. pack_into[] cần bộ đệm cũng như giá trị bù
cú pháp
cấu trúc ngoại lệ. lỗi
cấu trúc. lỗi được sử dụng để tăng ngoại lệ. Nó mô tả vấn đề với các đối số được thông qua là gì
cấu trúc. pack_into[]
cấu trúc. pack_into[] được sử dụng để đóng gói các giá trị theo cách chuỗi định dạng. Các giá trị được đóng gói được ghi vào bộ đệm có thể ghi ngay từ đầu ở vị trí bù
- offset là đối số bắt buộc
cú pháp
struct.pack_into[format, buffer, offset, v1, v2, ...]
cấu trúc. giải nén_từ[]
cấu trúc. unpack_from[] được sử dụng để giải nén bộ đệm từ đầu tại vị trí bù theo cách chuỗi định dạng. cấu trúc. mô-đun unpack_from[] trả về một tuple
Kích thước của bộ đệm tính bằng byte, bắt đầu từ vị trí bù, ít nhất phải bằng kích thước theo yêu cầu của định dạng, như được phản ánh bởi calcsize[]
cú pháp
struct.unpack_from[format, /, buffer, offset=0]
Ví dụ để hiểu Mô-đun cấu trúc trong Python
Trong phần này, chúng ta sẽ đi qua một số ví dụ để hiểu các mô-đun Python
cấu trúc. đóng gói[]
Trong ví dụ này, chúng ta sẽ học cách sử dụng cấu trúc trong Python để đóng gói bất kỳ dữ liệu nào thành dạng nhị phân của nó
Mã số
import struct packed = struct.pack['i 4s f', 10, b'John', 2500] print[packed]
đầu ra
b'\n\x00\x00\x00John\x00@\x1cE'
Giải thích ví dụ
Trong ví dụ trên, chúng tôi đang nhập mô-đun cấu trúc. Chuỗi định dạng 'i 4s f' được chuyển đến cú đánh. phương thức pack[] và đối tượng byte được tải với các giá trị được lưu trữ trong biến được đóng gói. Do đó, đầu ra hiển thị b'\n\x00\x00\x00John\x00@\x1cE'
cấu trúc. giải nén[]
Trong ví dụ này, chúng ta sẽ tìm hiểu cách sử dụng kiểu tấn công trong Python để giải nén bất kỳ dữ liệu nào từ dạng nhị phân của nó
Mã số
import struct packed = b'\n\x00\x00\x00John\x00@\x1cE' unpacked = struct.unpack['i 4s f', packed] print[unpacked]
đầu ra
Giải thích ví dụ
Trong ví dụ trên, chúng tôi đang nhập mô-đun cấu trúc. Chuỗi định dạng 'i 4s f' được chuyển đến cú đánh. phương thức giải nén [] cùng với đối tượng byte được tải với các giá trị được lưu trữ trong biến được đóng gói. cấu trúc. giải nén [] đang trả về bộ được liên kết với chuỗi định dạng và các giá trị được đóng gói, do đó, đầu ra là [10, b'John', 2500. 0]
cấu trúc. vôi hóa[]
Trong ví dụ này, chúng ta sẽ học cách sử dụng strike trong Python để tính toán kích thước của biểu diễn chuỗi của cấu trúc đã cho
Mã số
________số 8_______đầu ra
Giải thích ví dụ
Trong ví dụ trên, chúng tôi đang nhập mô-đun cấu trúc. Chuỗi định dạng 'i 4s f' được chuyển đến cấu trúc. phương thức calcsize[] sẽ tính toán kích thước của chuỗi định dạng. Kích thước được tính bằng byte và được lưu trữ trong biến kích thước. Do đó, đầu ra là 12 byte
cấu trúc. pack_into[]
Trong ví dụ này, chúng ta sẽ học cách làm việc với phương thức pack_into[] trong Python
Mã số
# importing modules struct and ctype import struct import ctypes # creating string buffer of size 8 buffer_size = struct.calcsize['ii']; # Create the buffer string Buffer = ctypes.create_string_buffer[buffer_size] # returning the packed data struct.pack_into['ii', Buffer,0, 1, 2] # Displaying the contents of the buffer print[Buffer[:]]
đầu ra
0struct.pack[formatString, v1, v2, ...]
Giải thích ví dụ
Trong ví dụ trên, đầu tiên chúng ta sẽ nhập các mô-đun struct và ctypes vì ví dụ này sử dụng các hàm cần các mô-đun này. Ở đây, chúng tôi đã tạo một chuỗi kích thước bộ đệm có tên Bộ đệm có kích thước 11 và chúng tôi đang nhận các giá trị được đóng gói của mình trong chuỗi bộ đệm. Chuỗi đệm khi được truyền vào cấu trúc. phương thức pack_into[] cùng với các tham số khác sẽ trả về dữ liệu được đóng gói
Sự khác biệt giữa gói cấu trúc và giải nén trong Python là gì?
pack nhận các giá trị không phải byte [e. g. số nguyên, chuỗi, v.v. ] và chuyển đổi chúng thành byte. Và ngược lại, cấu trúc. giải nén lấy byte và chuyển đổi chúng thành giá trị tương đương 'bậc cao hơn' .Python định nghĩa cấu trúc là gì?
Các cấu trúc được xác định bằng cách sử dụng một ngôn ngữ nhỏ dựa trên các chuỗi định dạng cho phép bạn xác định cách sắp xếp của các loại dữ liệu C khác nhau như char , int và long cũng như các biến thể không dấu của chúng . Các cấu trúc nối tiếp hiếm khi được sử dụng để biểu diễn các đối tượng dữ liệu được xử lý hoàn toàn bên trong mã Python. . Serialized structs are seldom used to represent data objects meant to be handled purely inside Python code.Mô-đun cấu trúc Python là gì?
Cấu trúc mô-đun được sử dụng để chuyển đổi các kiểu dữ liệu gốc của Python thành chuỗi byte và ngược lại . Chúng tôi không phải cài đặt nó. Đó là một mô-đun tích hợp có sẵn trong Python3. Mô-đun cấu trúc có liên quan đến ngôn ngữ C.Có cấu trúc Python không?
Cấu trúc Python là một công cụ thiết thực để quản lý và lưu trữ dữ liệu byte thô . Mô-đun cấu trúc cho phép tạo các kiểu dữ liệu nhị phân nhỏ gọn được sử dụng trong ngôn ngữ lập trình C.