Xin xem doc đầu tiên struct doc
struct.pack (fmt, v1, v2, ...)
Return một chuỗi chứa giá trị v1, v2, ... đóng gói theo định dạng đã cho. Đố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.
-
struct.unpack (fmt, string)
Unpack chuỗi (có lẽ đóng gói bởi gói (fmt, ...)) theo định dạng nhất định. Kết quả là một tuple ngay cả khi nó chứa chính xác một mục. Chuỗi phải chứa chính xác lượng dữ liệu được yêu cầu theo định dạng (len (chuỗi) phải bằng calcsize (fmt)).
Vì struct.pack
được định nghĩa là struct.pack(fmt, v1, v2, ...)
. Nó chấp nhận một danh sách đối số không được lập từ khóa (v1, v2, ...
, aka *args
), vì vậy struct.unpack
cần trả về một danh sách như đối tượng, đó là lý do tại sao tuple.
Nó sẽ là dễ hiểu nếu bạn xem xét gói như
x = struct.pack(fmt, *args)
args = struct.unpack(fmt, x) # return *args
Ví dụ:
>>> x = struct.pack(">i", 1)
>>> struct.unpack(">i", x)
(1,)
>>> x = struct.pack(">iii", 1, 2, 3)
>>> struct.unpack(">iii", x)
(1, 2, 3)
Nếu cấu trúc chứa nhiều hơn một mục thì bạn sẽ quay trở lại cái gì? Nói chung, tốt nhất là nếu các hàm chỉ trả về một kiểu duy nhất (vì vậy người gọi không phải có trường hợp đặc biệt tùy thuộc vào việc có một hoặc hai mục hay ...) – mgilson
Tôi hiểu ... Đây có phải là/chỉ/đúng cách để đóng gói/giải nén một * int *? – Jedi
Trong các phiên bản python gần đây có 'int.from_bytes' và' int.to_bytes' – mgilson