Functions to convert between Python values and C structs.
Python strings are used to hold the data representing the C struct
and also as format strings to describe the layout of data in the C struct.
The optional first format char indicates byte ordering and alignment:
@: native w/native alignment(default)
=: native w/standard alignment
<: little-endian, std. alignment
>: big-endian, std. alignment
!: network, std (same as >)
The remaining chars indicate types of args and must match exactly;
these can be preceded by a decimal repeat count:
x: pad byte (no data); c:char; b:signed byte; B:unsigned byte;
h:short; H:unsigned short; i:int; I:unsigned int;
l:long; L:unsigned long; f:float; d:double.
Special cases (preceding decimal count indicates length):
s:string (array of char); p: pascal string (w. count byte).
Special case (only available in native format):
P:an integer type that is wide enough to hold a pointer.
Whitespace between formats is ignored.
The variable struct.error is an exception raised on errors.