Gói cấu trúc python 2 vs 3

Mô-đun struct trong Python được sử dụng để chuyển đổi các kiểu dữ liệu gốc của Python như chuỗi và số thành một chuỗi byte và ngược lại. Nó được sử dụng chủ yếu để xử lý dữ liệu nhị phân được lưu trữ trong các tệp hoặc từ các kết nối mạng, trong số các nguồn khác. Cấu trúc Python là một mô-đun tích hợp, có nghĩa là chúng ta không cần phải cài đặt thủ công mô-đun cấu trúc trên hệ thống của mình

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về mô-đun cấu trúc python. Chúng tôi sẽ đề cập đến các chức năng khác nhau có sẵn trong mô-đun này, ví dụ:


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
0,

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
1,

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
2,

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
3 và

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
4 cùng với các ví dụ khác nhau. Tóm lại, hướng dẫn này sẽ cung cấp cho bạn ý tưởng chung về mô-đun cấu trúc python và các phương thức khác nhau của nó bằng cách giải các ví dụ khác nhau

 

Bắt đầu với mô-đun cấu trúc Python

Mô-đun cấu trúc Python được sử dụng để cung cấp giao diện Pythonic đơn giản để truy cập và thao tác kiểu dữ liệu cấu trúc của C. Mô-đun này có thể chuyển đổi các giá trị Python thành cấu trúc C và ngược lại. Cấu trúc C được sử dụng làm đối tượng byte Python vì không có gì được gọi là đối tượng trong C; . Bảng sau đây cho thấy một số ký hiệu được sử dụng trong C và Python để biểu thị các kiểu dữ liệu. Xem bảng bên dưới

CŨNG ĐỌC. Ví dụ về chênh lệch đối xứng Python [Hướng dẫn]

Định dạng C typePython typeccharbytes có độ dài 1bsigned charintegerBunsigned charintegerhshortintegeriintintegerddoublefloatffloatfloatschar[]bytes?_Boolbool

 

cấu trúc Python. gói[] phương pháp

Python


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
0 được sử dụng để đóng gói các phần tử thành chuỗi byte Python [đối tượng byte]. Cú pháp đơn giản của phương thức

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
0 như sau

struct.pack[format, value1, value2, …]

Ở đây


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
7, 

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
8, … là các giá trị sẽ được đóng gói vào đối tượng byte.

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
9 đề cập đến định dạng của bao bì. Điều này là cần thiết vì chúng ta cần chỉ định kiểu dữ liệu của chuỗi byte, vì nó được sử dụng với mã C

 

Ví dụ về cấu trúc Python. gói[] phương pháp

Bây giờ chúng ta hãy lấy một ví dụ và xem cách chúng ta có thể sử dụng phương thức


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
0 của python để đóng gói các giá trị đã cho vào đối tượng byte. Xem ví dụ bên dưới


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
2

đầu ra


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'

Lưu ý rằng loại biến được đóng gói là byte. Bây giờ chúng ta hãy cố gắng hiểu mã. Như bạn có thể thấy trong chương trình trên, nó lưu trữ 3 số nguyên 1, 2 và 3 trong một đối tượng byte bằng phương thức


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
41. Vì kích thước của một số nguyên là 4 byte, nên bạn thấy 3 khối 4 byte ở đầu ra, tương ứng với 3 số nguyên trong C. Nếu chúng tôi cung cấp định dạng sai cho các giá trị đã cho, chương trình sẽ trả về lỗi. Xem chương trình python sau

Quảng cáo


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
4

đầu ra

CŨNG ĐỌC. Python tính toán 6 tháng trước kể từ hôm nay [GIẢI QUYẾT]

Lưu ý rằng chúng tôi sử dụng định dạng


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
42 được sử dụng cho kiểu dữ liệu char nhưng chúng tôi cung cấp số nguyên để python đưa ra đầu ra ở trên

 

cấu trúc Python. phương thức giải nén []

Phương pháp


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
1, giải nén giá trị được đóng gói thành biểu diễn ban đầu của nó theo một định dạng thích hợp. Điều này trả về một bộ có kích thước bằng với số lượng giá trị được truyền do đối tượng byte được giải nén để cung cấp các phần tử. Cú pháp đơn giản của phương thức

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
1 như sau


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
9

Đây thực sự là điều ngược lại của phương pháp


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
0 và giải nén chuỗi byte theo trình xác định định dạng

 

Ví dụ về cấu trúc. phương thức giải nén []

Bây giờ, chúng ta hãy lấy một ví dụ và xem phương pháp


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
1 thực sự hoạt động như thế nào. Xem ví dụ bên dưới


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
2

đầu ra


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
3

Lưu ý rằng phương thức


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
1 của python chuyển đổi các byte thành một bộ giá trị. Nếu chúng tôi không cung cấp định dạng bắt buộc cho các byte đã cho của chuỗi, một lần nữa chúng tôi sẽ gặp lỗi. Xem ví dụ bên dưới


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
5

đầu ra

Quảng cáo

Lưu ý rằng chúng tôi cung cấp định dạng cho các ký tự char trong khi chuỗi_byte đã cho thuộc loại số nguyên, đó là lý do tại sao chúng tôi gặp lỗi trên

CŨNG ĐỌC. Python bắt nhiều ngoại lệ [Ví dụ thực tế]

 

cấu trúc Python. hàm calcsize[]

Hàm Python


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
3 trả về tổng kích thước của biểu diễn Chuỗi của cấu trúc bằng cách sử dụng một trình xác định định dạng đã cho, để truy xuất các loại dữ liệu và tính toán kích thước. Ví dụ: hàm này sẽ trả về 4 cho số nguyên và 1 cho ký tự char vì chúng chứa 4 byte 1 tương ứng. Cú pháp đơn giản của

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
3 được hiển thị bên dưới


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
8

Hàm này chỉ nhận đối số, là định dạng của loại dữ liệu và dựa trên đối số, hàm này trả về kích thước của loại dữ liệu đã chỉ định theo byte

 

Ví dụ về cấu trúc Python. hàm calcsize[]

Bây giờ chúng ta hãy lấy một ví dụ và xem hàm


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
3 của python. Xem ví dụ bên dưới để in kích thước của các loại dữ liệu được chỉ định khác nhau bằng cách sử dụng hàm

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
3 của python


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
1

đầu ra


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
20

Lưu ý rằng phương thức


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
3 của python trả về kích thước của kiểu dữ liệu đã chỉ định. Hơn nữa, phương pháp này cũng có thể được sử dụng để tìm kích thước của nhiều loại dữ liệu cùng một lúc. Phương thức này sẽ cộng tất cả các kích cỡ của kiểu dữ liệu và trả về tổng. Xem ví dụ bên dưới

Quảng cáo


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
21

đầu ra


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
22

Lưu ý rằng tổng kích thước của ba loại dữ liệu số nguyên là 12 và chúng tôi nhận được cùng một đầu ra

CŨNG ĐỌC. Chuỗi so sánh Python [10+ ví dụ]

 

cấu trúc Python. hàm pack_into[]

Hàm


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
4 được sử dụng để đóng gói các giá trị vào bộ đệm chuỗi Python, có sẵn trong mô-đun

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
94. Sau đây là cú pháp đơn giản của hàm

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
4 trong python


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
23

Trong cú pháp trên, Định dạng đề cập đến trình xác định định dạng, như mọi khi.


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
96 là bộ đệm chuỗi sẽ chứa các giá trị được đóng gói đã chỉ định. Chúng tôi cũng có thể chỉ định một vị trí

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
97 từ địa chỉ cơ sở mà từ đó việc đóng gói sẽ diễn ra

 

Ví dụ về cấu trúc. hàm pack_into[]

Bây giờ chúng ta hãy lấy một ví dụ và xem cấu trúc của python. chức năng pack_into[] thực sự hoạt động. Trước khi viết chương trình, trước tiên chúng ta phải nhập ctypes vì ​​hàm này sử dụng các giá trị gói có sẵn trong ctypes. Xem ví dụ bên dưới


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
24

đầu ra


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
25

Lưu ý rằng trong đoạn mã trên, trước tiên chúng tôi đã tạo một chuỗi kích thước bộ đệm và chúng tôi nhận các giá trị được đóng gói của mình trong chuỗi bộ đệm. Nếu chúng tôi sẽ cung cấp nhiều kích thước định dạng hoặc định dạng định dạng hơn giá trị được cung cấp, chương trình sẽ trả về lỗi. Xem ví dụ bên dưới


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
26

đầu ra

Quảng cáo

Lưu ý rằng chúng tôi chỉ cung cấp hai giá trị và kích thước định dạng cho 5, vì vậy chương trình trả về lỗi trên

CŨNG ĐỌC. Cách kiểm tra loại biến [đối tượng] trong Python

 

cấu trúc Python. chức năng giải nén_form[]

Nó tương tự với phương thức


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
1 của python và con trăn

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
2 thực hiện ngược lại với

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
4. Sau đây là cú pháp đơn giản


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
27

Hàm này trả về một bộ giá trị, tương tự như python


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
1

 

Ví dụ về cấu trúc Python. chức năng giải nén_form[]

Bây giờ chúng ta hãy lấy một ví dụ về cấu trúc python. unpack_form[] và xem nó thực sự hoạt động như thế nào trong chương trình python. Xem ví dụ bên dưới


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
28

đầu ra


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
3

Lưu ý rằng phương thức


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
2 của python đã trả về một bộ giá trị

 

Tóm lược

Mô-đun struct trong Python được sử dụng để chuyển đổi các kiểu dữ liệu gốc của Python như chuỗi và số thành một chuỗi byte và ngược lại. Trong hướng dẫn này, chúng ta đã tìm hiểu về mô-đun cấu trúc Python. Chúng tôi đã học cách tìm kích thước và chuyển đổi các loại dữ liệu khác nhau thành byte. Đồng thời, chúng tôi đề cập đến các chức năng khác nhau có sẵn trong mô-đun này bao gồm python


b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
0, python

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
1, python

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
3,

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
4 và

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00'
2 bằng cách giải các ví dụ khác nhau

CŨNG ĐỌC. Nhận xét nhiều dòng Python [Phương pháp & ví dụ]

Chúng tôi cũng đã thảo luận về một số lỗi phổ biến có thể xảy ra khi sử dụng mô-đun cấu trúc python và các chức năng khác nhau của nó. Tóm lại, hướng dẫn này chứa tất cả các ví dụ và chức năng cần thiết để bắt đầu làm việc với mô-đun cấu trúc python

Chủ Đề