Mercurial > cpython-lru_cache-weakref
annotate Doc/library/struct.rst @ 78069:a8aa77458e12 3.2
Add c_size_t and c_ssize_t to the ctypes summary table.
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Thu, 12 Jul 2012 20:31:50 +0200 |
| parents | 90cdf403132e |
| children | db3e15017172 |
| rev | line source |
|---|---|
|
48591
1de718a31004
update the struct documentation to refer to bytes
Benjamin Peterson <benjamin@python.org>
parents:
47320
diff
changeset
|
1 :mod:`struct` --- Interpret bytes as packed binary data |
|
56002
fa91270b6087
Merged revisions 74821,74828-74831,74833,74835 via svnmerge from
Georg Brandl <georg@python.org>
parents:
52414
diff
changeset
|
2 ======================================================= |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
3 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
4 .. module:: struct |
|
48591
1de718a31004
update the struct documentation to refer to bytes
Benjamin Peterson <benjamin@python.org>
parents:
47320
diff
changeset
|
5 :synopsis: Interpret bytes as packed binary data. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
6 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
7 .. index:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
8 pair: C; structures |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
9 triple: packing; binary; data |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
10 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
11 This module performs conversions between Python values and C structs represented |
|
61867
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
12 as Python :class:`bytes` objects. This can be used in handling binary data |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
13 stored in files or from network connections, among other sources. It uses |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
14 :ref:`struct-format-strings` as compact descriptions of the layout of the C |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
15 structs and the intended conversion to/from Python values. |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
16 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
17 .. note:: |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
18 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
19 By default, the result of packing a given C struct includes pad bytes in |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
20 order to maintain proper alignment for the C types involved; similarly, |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
21 alignment is taken into account when unpacking. This behavior is chosen so |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
22 that the bytes of a packed struct correspond exactly to the layout in memory |
|
62334
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
23 of the corresponding C struct. To handle platform-independent data formats |
|
65350
157751cc4cd5
Fixing some sphinx inline directives - detected using ``make check``.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65137
diff
changeset
|
24 or omit implicit pad bytes, use ``standard`` size and alignment instead of |
|
157751cc4cd5
Fixing some sphinx inline directives - detected using ``make check``.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65137
diff
changeset
|
25 ``native`` size and alignment: see :ref:`struct-alignment` for details. |
|
61867
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
26 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
27 Functions and Exceptions |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
28 ------------------------ |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
29 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
30 The module defines the following exception and functions: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
31 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
32 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
33 .. exception:: error |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
34 |
|
61867
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
35 Exception raised on various occasions; argument is a string describing what |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
36 is wrong. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
37 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
38 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
39 .. function:: pack(fmt, v1, v2, ...) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
40 |
|
62309
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
41 Return a bytes object containing the values *v1*, *v2*, ... packed according |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
42 to the format string *fmt*. The arguments must match the values required by |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
43 the format exactly. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
44 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
45 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
46 .. function:: pack_into(fmt, buffer, offset, v1, v2, ...) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
47 |
|
62309
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
48 Pack the values *v1*, *v2*, ... according to the format string *fmt* and |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
49 write the packed bytes into the writable buffer *buffer* starting at |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
50 position *offset*. Note that *offset* is a required argument. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
51 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
52 |
|
62309
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
53 .. function:: unpack(fmt, buffer) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
54 |
|
62309
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
55 Unpack from the buffer *buffer* (presumably packed by ``pack(fmt, ...)``) |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
56 according to the format string *fmt*. The result is a tuple even if it |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
57 contains exactly one item. The buffer must contain exactly the amount of |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
58 data required by the format (``len(bytes)`` must equal ``calcsize(fmt)``). |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
59 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
60 |
|
56002
fa91270b6087
Merged revisions 74821,74828-74831,74833,74835 via svnmerge from
Georg Brandl <georg@python.org>
parents:
52414
diff
changeset
|
61 .. function:: unpack_from(fmt, buffer, offset=0) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
62 |
|
62309
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
63 Unpack from *buffer* starting at position *offset*, according to the format |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
64 string *fmt*. The result is a tuple even if it contains exactly one |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
65 item. *buffer* must contain at least the amount of data required by the |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
66 format (``len(buffer[offset:])`` must be at least ``calcsize(fmt)``). |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
67 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
68 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
69 .. function:: calcsize(fmt) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
70 |
|
62309
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
71 Return the size of the struct (and hence of the bytes object produced by |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
72 ``pack(fmt, ...)``) corresponding to the format string *fmt*. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
73 |
|
61867
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
74 .. _struct-format-strings: |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
75 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
76 Format Strings |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
77 -------------- |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
78 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
79 Format strings are the mechanism used to specify the expected layout when |
|
62309
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
80 packing and unpacking data. They are built up from :ref:`format-characters`, |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
81 which specify the type of data being packed/unpacked. In addition, there are |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
82 special characters for controlling the :ref:`struct-alignment`. |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
83 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
84 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
85 .. _struct-alignment: |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
86 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
87 Byte Order, Size, and Alignment |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
88 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
89 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
90 By default, C types are represented in the machine's native format and byte |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
91 order, and properly aligned by skipping pad bytes if necessary (according to the |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
92 rules used by the C compiler). |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
93 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
94 Alternatively, the first character of the format string can be used to indicate |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
95 the byte order, size and alignment of the packed data, according to the |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
96 following table: |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
97 |
|
62334
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
98 +-----------+------------------------+----------+-----------+ |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
99 | Character | Byte order | Size | Alignment | |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
100 +===========+========================+==========+===========+ |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
101 | ``@`` | native | native | native | |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
102 +-----------+------------------------+----------+-----------+ |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
103 | ``=`` | native | standard | none | |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
104 +-----------+------------------------+----------+-----------+ |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
105 | ``<`` | little-endian | standard | none | |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
106 +-----------+------------------------+----------+-----------+ |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
107 | ``>`` | big-endian | standard | none | |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
108 +-----------+------------------------+----------+-----------+ |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
109 | ``!`` | network (= big-endian) | standard | none | |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
110 +-----------+------------------------+----------+-----------+ |
|
62309
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
111 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
112 If the first character is not one of these, ``'@'`` is assumed. |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
113 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
114 Native byte order is big-endian or little-endian, depending on the host |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
115 system. For example, Intel x86 and AMD64 (x86-64) are little-endian; |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
116 Motorola 68000 and PowerPC G5 are big-endian; ARM and Intel Itanium feature |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
117 switchable endianness (bi-endian). Use ``sys.byteorder`` to check the |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
118 endianness of your system. |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
119 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
120 Native size and alignment are determined using the C compiler's |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
121 ``sizeof`` expression. This is always combined with native byte order. |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
122 |
|
62334
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
123 Standard size depends only on the format character; see the table in |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
124 the :ref:`format-characters` section. |
|
62309
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
125 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
126 Note the difference between ``'@'`` and ``'='``: both use native byte order, but |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
127 the size and alignment of the latter is standardized. |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
128 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
129 The form ``'!'`` is available for those poor souls who claim they can't remember |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
130 whether network byte order is big-endian or little-endian. |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
131 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
132 There is no way to indicate non-native byte order (force byte-swapping); use the |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
133 appropriate choice of ``'<'`` or ``'>'``. |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
134 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
135 Notes: |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
136 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
137 (1) Padding is only automatically added between successive structure members. |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
138 No padding is added at the beginning or the end of the encoded struct. |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
139 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
140 (2) No padding is added when using non-native size and alignment, e.g. |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
141 with '<', '>', '=', and '!'. |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
142 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
143 (3) To align the end of a structure to the alignment requirement of a |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
144 particular type, end the format with the code for that type with a repeat |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
145 count of zero. See :ref:`struct-examples`. |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
146 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
147 |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
148 .. _format-characters: |
|
61867
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
149 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
150 Format Characters |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
151 ^^^^^^^^^^^^^^^^^ |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
152 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
153 Format characters have the following meaning; the conversion between C and |
|
62642
321edba5f795
Merged revisions 82381 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62335
diff
changeset
|
154 Python values should be obvious given their types. The 'Standard size' column |
|
321edba5f795
Merged revisions 82381 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62335
diff
changeset
|
155 refers to the size of the packed value in bytes when using standard size; that |
|
321edba5f795
Merged revisions 82381 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62335
diff
changeset
|
156 is, when the format string starts with one of ``'<'``, ``'>'``, ``'!'`` or |
|
321edba5f795
Merged revisions 82381 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62335
diff
changeset
|
157 ``'='``. When using native size, the size of the packed value is |
|
321edba5f795
Merged revisions 82381 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62335
diff
changeset
|
158 platform-dependent. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
159 |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
160 +--------+--------------------------+--------------------+----------------+------------+ |
|
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
161 | Format | C Type | Python type | Standard size | Notes | |
|
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
162 +========+==========================+====================+================+============+ |
|
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
163 | ``x`` | pad byte | no value | | | |
|
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
164 +--------+--------------------------+--------------------+----------------+------------+ |
|
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
165 | ``c`` | :c:type:`char` | bytes of length 1 | 1 | | |
|
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
166 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
167 | ``b`` | :c:type:`signed char` | integer | 1 | \(1),\(3) | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
168 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
169 | ``B`` | :c:type:`unsigned char` | integer | 1 | \(3) | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
170 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
171 | ``?`` | :c:type:`_Bool` | bool | 1 | \(1) | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
172 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
173 | ``h`` | :c:type:`short` | integer | 2 | \(3) | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
174 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
175 | ``H`` | :c:type:`unsigned short` | integer | 2 | \(3) | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
176 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
177 | ``i`` | :c:type:`int` | integer | 4 | \(3) | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
178 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
179 | ``I`` | :c:type:`unsigned int` | integer | 4 | \(3) | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
180 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
181 | ``l`` | :c:type:`long` | integer | 4 | \(3) | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
182 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
183 | ``L`` | :c:type:`unsigned long` | integer | 4 | \(3) | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
184 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
185 | ``q`` | :c:type:`long long` | integer | 8 | \(2), \(3) | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
186 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
187 | ``Q`` | :c:type:`unsigned long | integer | 8 | \(2), \(3) | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
188 | | long` | | | | |
|
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
189 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
190 | ``f`` | :c:type:`float` | float | 4 | \(4) | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
191 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
192 | ``d`` | :c:type:`double` | float | 8 | \(4) | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
193 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
194 | ``s`` | :c:type:`char[]` | bytes | | | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
195 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
196 | ``p`` | :c:type:`char[]` | bytes | | | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
197 +--------+--------------------------+--------------------+----------------+------------+ |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
198 | ``P`` | :c:type:`void \*` | integer | | \(5) | |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
199 +--------+--------------------------+--------------------+----------------+------------+ |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
200 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
201 Notes: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
202 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
203 (1) |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
204 The ``'?'`` conversion code corresponds to the :c:type:`_Bool` type defined by |
|
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
205 C99. If this type is not available, it is simulated using a :c:type:`char`. In |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
206 standard mode, it is always represented by one byte. |
|
48591
1de718a31004
update the struct documentation to refer to bytes
Benjamin Peterson <benjamin@python.org>
parents:
47320
diff
changeset
|
207 |
|
1de718a31004
update the struct documentation to refer to bytes
Benjamin Peterson <benjamin@python.org>
parents:
47320
diff
changeset
|
208 (2) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
209 The ``'q'`` and ``'Q'`` conversion codes are available in native mode only if |
|
65137
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
210 the platform C compiler supports C :c:type:`long long`, or, on Windows, |
|
521eac31a893
Migrate to Sphinx 1.0 C language constructs.
Georg Brandl <georg@python.org>
parents:
62913
diff
changeset
|
211 :c:type:`__int64`. They are always available in standard modes. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
212 |
|
48591
1de718a31004
update the struct documentation to refer to bytes
Benjamin Peterson <benjamin@python.org>
parents:
47320
diff
changeset
|
213 (3) |
|
60267
aa121a39a956
Merged revisions 79674 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
59003
diff
changeset
|
214 When attempting to pack a non-integer using any of the integer conversion |
|
aa121a39a956
Merged revisions 79674 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
59003
diff
changeset
|
215 codes, if the non-integer has a :meth:`__index__` method then that method is |
|
aa121a39a956
Merged revisions 79674 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
59003
diff
changeset
|
216 called to convert the argument to an integer before packing. |
|
aa121a39a956
Merged revisions 79674 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
59003
diff
changeset
|
217 |
|
aa121a39a956
Merged revisions 79674 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
59003
diff
changeset
|
218 .. versionchanged:: 3.2 |
|
aa121a39a956
Merged revisions 79674 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
59003
diff
changeset
|
219 Use of the :meth:`__index__` method for non-integers is new in 3.2. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
220 |
|
62334
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
221 (4) |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
222 For the ``'f'`` and ``'d'`` conversion codes, the packed representation uses |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
223 the IEEE 754 binary32 (for ``'f'``) or binary64 (for ``'d'``) format, |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
224 regardless of the floating-point format used by the platform. |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
225 |
|
62335
91bb572b756e
Fix notes in format character table.
Mark Dickinson <dickinsm@gmail.com>
parents:
62334
diff
changeset
|
226 (5) |
|
62334
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
227 The ``'P'`` format character is only available for the native byte ordering |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
228 (selected as the default or with the ``'@'`` byte order character). The byte |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
229 order character ``'='`` chooses to use little- or big-endian ordering based |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
230 on the host system. The struct module does not interpret this as native |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
231 ordering, so the ``'P'`` format is not available. |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
232 |
|
7ac0f67ebbba
Merged revisions 81994 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62309
diff
changeset
|
233 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
234 A format character may be preceded by an integral repeat count. For example, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
235 the format string ``'4h'`` means exactly the same as ``'hhhh'``. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
236 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
237 Whitespace characters between formats are ignored; a count and its format must |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
238 not contain whitespace though. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
239 |
|
48591
1de718a31004
update the struct documentation to refer to bytes
Benjamin Peterson <benjamin@python.org>
parents:
47320
diff
changeset
|
240 For the ``'s'`` format character, the count is interpreted as the length of the |
|
1de718a31004
update the struct documentation to refer to bytes
Benjamin Peterson <benjamin@python.org>
parents:
47320
diff
changeset
|
241 bytes, not a repeat count like for the other format characters; for example, |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
242 ``'10s'`` means a single 10-byte string, while ``'10c'`` means 10 characters. |
|
71382
90cdf403132e
Fix closes Issue11436 - Minor clarification to struct documentation for 's' format character.
Senthil Kumaran <senthil@uthcode.com>
parents:
68257
diff
changeset
|
243 If a count is not given, it defaults to 1. For packing, the string is |
|
90cdf403132e
Fix closes Issue11436 - Minor clarification to struct documentation for 's' format character.
Senthil Kumaran <senthil@uthcode.com>
parents:
68257
diff
changeset
|
244 truncated or padded with null bytes as appropriate to make it fit. For |
|
90cdf403132e
Fix closes Issue11436 - Minor clarification to struct documentation for 's' format character.
Senthil Kumaran <senthil@uthcode.com>
parents:
68257
diff
changeset
|
245 unpacking, the resulting bytes object always has exactly the specified number |
|
90cdf403132e
Fix closes Issue11436 - Minor clarification to struct documentation for 's' format character.
Senthil Kumaran <senthil@uthcode.com>
parents:
68257
diff
changeset
|
246 of bytes. As a special case, ``'0s'`` means a single, empty string (while |
|
90cdf403132e
Fix closes Issue11436 - Minor clarification to struct documentation for 's' format character.
Senthil Kumaran <senthil@uthcode.com>
parents:
68257
diff
changeset
|
247 ``'0c'`` means 0 characters). |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
248 |
|
52414
f171bac9f961
Issue #5463: Remove _PY_STRUCT_RANGE_CHECKING constant from struct
Mark Dickinson <dickinsm@gmail.com>
parents:
52105
diff
changeset
|
249 When packing a value ``x`` using one of the integer formats (``'b'``, |
|
f171bac9f961
Issue #5463: Remove _PY_STRUCT_RANGE_CHECKING constant from struct
Mark Dickinson <dickinsm@gmail.com>
parents:
52105
diff
changeset
|
250 ``'B'``, ``'h'``, ``'H'``, ``'i'``, ``'I'``, ``'l'``, ``'L'``, |
|
f171bac9f961
Issue #5463: Remove _PY_STRUCT_RANGE_CHECKING constant from struct
Mark Dickinson <dickinsm@gmail.com>
parents:
52105
diff
changeset
|
251 ``'q'``, ``'Q'``), if ``x`` is outside the valid range for that format |
|
f171bac9f961
Issue #5463: Remove _PY_STRUCT_RANGE_CHECKING constant from struct
Mark Dickinson <dickinsm@gmail.com>
parents:
52105
diff
changeset
|
252 then :exc:`struct.error` is raised. |
|
f171bac9f961
Issue #5463: Remove _PY_STRUCT_RANGE_CHECKING constant from struct
Mark Dickinson <dickinsm@gmail.com>
parents:
52105
diff
changeset
|
253 |
|
f171bac9f961
Issue #5463: Remove _PY_STRUCT_RANGE_CHECKING constant from struct
Mark Dickinson <dickinsm@gmail.com>
parents:
52105
diff
changeset
|
254 .. versionchanged:: 3.1 |
|
f171bac9f961
Issue #5463: Remove _PY_STRUCT_RANGE_CHECKING constant from struct
Mark Dickinson <dickinsm@gmail.com>
parents:
52105
diff
changeset
|
255 In 3.0, some of the integer formats wrapped out-of-range values and |
|
f171bac9f961
Issue #5463: Remove _PY_STRUCT_RANGE_CHECKING constant from struct
Mark Dickinson <dickinsm@gmail.com>
parents:
52105
diff
changeset
|
256 raised :exc:`DeprecationWarning` instead of :exc:`struct.error`. |
|
f171bac9f961
Issue #5463: Remove _PY_STRUCT_RANGE_CHECKING constant from struct
Mark Dickinson <dickinsm@gmail.com>
parents:
52105
diff
changeset
|
257 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
258 The ``'p'`` format character encodes a "Pascal string", meaning a short |
|
65114
eb8e13784de7
Merged revisions 82629,82632,82724,82757-82758,82760-82763,82798-82799,82801 via svnmerge from
Georg Brandl <georg@python.org>
parents:
62642
diff
changeset
|
259 variable-length string stored in a *fixed number of bytes*, given by the count. |
|
eb8e13784de7
Merged revisions 82629,82632,82724,82757-82758,82760-82763,82798-82799,82801 via svnmerge from
Georg Brandl <georg@python.org>
parents:
62642
diff
changeset
|
260 The first byte stored is the length of the string, or 255, whichever is |
|
eb8e13784de7
Merged revisions 82629,82632,82724,82757-82758,82760-82763,82798-82799,82801 via svnmerge from
Georg Brandl <georg@python.org>
parents:
62642
diff
changeset
|
261 smaller. The bytes of the string follow. If the string passed in to |
|
eb8e13784de7
Merged revisions 82629,82632,82724,82757-82758,82760-82763,82798-82799,82801 via svnmerge from
Georg Brandl <georg@python.org>
parents:
62642
diff
changeset
|
262 :func:`pack` is too long (longer than the count minus 1), only the leading |
|
eb8e13784de7
Merged revisions 82629,82632,82724,82757-82758,82760-82763,82798-82799,82801 via svnmerge from
Georg Brandl <georg@python.org>
parents:
62642
diff
changeset
|
263 ``count-1`` bytes of the string are stored. If the string is shorter than |
|
eb8e13784de7
Merged revisions 82629,82632,82724,82757-82758,82760-82763,82798-82799,82801 via svnmerge from
Georg Brandl <georg@python.org>
parents:
62642
diff
changeset
|
264 ``count-1``, it is padded with null bytes so that exactly count bytes in all |
|
eb8e13784de7
Merged revisions 82629,82632,82724,82757-82758,82760-82763,82798-82799,82801 via svnmerge from
Georg Brandl <georg@python.org>
parents:
62642
diff
changeset
|
265 are used. Note that for :func:`unpack`, the ``'p'`` format character consumes |
|
eb8e13784de7
Merged revisions 82629,82632,82724,82757-82758,82760-82763,82798-82799,82801 via svnmerge from
Georg Brandl <georg@python.org>
parents:
62642
diff
changeset
|
266 ``count`` bytes, but that the string returned can never contain more than 255 |
|
eb8e13784de7
Merged revisions 82629,82632,82724,82757-82758,82760-82763,82798-82799,82801 via svnmerge from
Georg Brandl <georg@python.org>
parents:
62642
diff
changeset
|
267 bytes. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
268 |
|
45773
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44396
diff
changeset
|
269 For the ``'?'`` format character, the return value is either :const:`True` or |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
270 :const:`False`. When packing, the truth value of the argument object is used. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
271 Either 0 or 1 in the native or standard bool representation will be packed, and |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
272 any non-zero value will be True when unpacking. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
273 |
|
61867
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
274 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
275 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
276 .. _struct-examples: |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
277 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
278 Examples |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
279 ^^^^^^^^ |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
280 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
281 .. note:: |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
282 All examples assume a native byte order, size, and alignment with a |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
283 big-endian machine. |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
284 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
285 A basic example of packing/unpacking three integers:: |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
286 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
287 >>> from struct import * |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
288 >>> pack('hhl', 1, 2, 3) |
|
48591
1de718a31004
update the struct documentation to refer to bytes
Benjamin Peterson <benjamin@python.org>
parents:
47320
diff
changeset
|
289 b'\x00\x01\x00\x02\x00\x00\x00\x03' |
|
1de718a31004
update the struct documentation to refer to bytes
Benjamin Peterson <benjamin@python.org>
parents:
47320
diff
changeset
|
290 >>> unpack('hhl', b'\x00\x01\x00\x02\x00\x00\x00\x03') |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
291 (1, 2, 3) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
292 >>> calcsize('hhl') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
293 8 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
294 |
|
47320
3975ec2b0de2
Merged revisions 63542-63544,63546,63553,63563-63564,63567,63569,63576 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
46556
diff
changeset
|
295 Unpacked fields can be named by assigning them to variables or by wrapping |
|
3975ec2b0de2
Merged revisions 63542-63544,63546,63553,63563-63564,63567,63569,63576 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
46556
diff
changeset
|
296 the result in a named tuple:: |
|
3975ec2b0de2
Merged revisions 63542-63544,63546,63553,63563-63564,63567,63569,63576 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
46556
diff
changeset
|
297 |
|
48591
1de718a31004
update the struct documentation to refer to bytes
Benjamin Peterson <benjamin@python.org>
parents:
47320
diff
changeset
|
298 >>> record = b'raymond \x32\x12\x08\x01\x08' |
|
47320
3975ec2b0de2
Merged revisions 63542-63544,63546,63553,63563-63564,63567,63569,63576 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
46556
diff
changeset
|
299 >>> name, serialnum, school, gradelevel = unpack('<10sHHb', record) |
|
3975ec2b0de2
Merged revisions 63542-63544,63546,63553,63563-63564,63567,63569,63576 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
46556
diff
changeset
|
300 |
|
3975ec2b0de2
Merged revisions 63542-63544,63546,63553,63563-63564,63567,63569,63576 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
46556
diff
changeset
|
301 >>> from collections import namedtuple |
|
3975ec2b0de2
Merged revisions 63542-63544,63546,63553,63563-63564,63567,63569,63576 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
46556
diff
changeset
|
302 >>> Student = namedtuple('Student', 'name serialnum school gradelevel') |
|
48591
1de718a31004
update the struct documentation to refer to bytes
Benjamin Peterson <benjamin@python.org>
parents:
47320
diff
changeset
|
303 >>> Student._make(unpack('<10sHHb', record)) |
|
1de718a31004
update the struct documentation to refer to bytes
Benjamin Peterson <benjamin@python.org>
parents:
47320
diff
changeset
|
304 Student(name=b'raymond ', serialnum=4658, school=264, gradelevel=8) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
305 |
|
61867
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
306 The ordering of format characters may have an impact on size since the padding |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
307 needed to satisfy alignment requirements is different:: |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
308 |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
309 >>> pack('ci', b'*', 0x12131415) |
|
61867
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
310 b'*\x00\x00\x00\x12\x13\x14\x15' |
|
67181
b901da561cd1
Issue #10783: struct.pack() doesn't encode implicitly unicode to UTF-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65350
diff
changeset
|
311 >>> pack('ic', 0x12131415, b'*') |
|
61867
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
312 b'\x12\x13\x14\x15*' |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
313 >>> calcsize('ci') |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
314 8 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
315 >>> calcsize('ic') |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
316 5 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
317 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
318 The following format ``'llh0l'`` specifies two pad bytes at the end, assuming |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
319 longs are aligned on 4-byte boundaries:: |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
320 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
321 >>> pack('llh0l', 1, 2, 3) |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
322 b'\x00\x00\x00\x01\x00\x00\x00\x02\x00\x03\x00\x00' |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
323 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
324 This only works when native size and alignment are in effect; standard size and |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
325 alignment does not enforce any alignment. |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
326 |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
327 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
328 .. seealso:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
329 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
330 Module :mod:`array` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
331 Packed binary storage of homogeneous data. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
332 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
333 Module :mod:`xdrlib` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
334 Packing and unpacking of XDR data. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
335 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
336 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
337 .. _struct-objects: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
338 |
|
62309
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
339 Classes |
|
61867
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
340 ------- |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
341 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
342 The :mod:`struct` module also defines the following type: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
343 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
344 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
345 .. class:: Struct(format) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
346 |
|
61867
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
347 Return a new Struct object which writes and reads binary data according to |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
348 the format string *format*. Creating a Struct object once and calling its |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
349 methods is more efficient than calling the :mod:`struct` functions with the |
|
1e06a6c31234
Merged revisions 80016 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
56002
diff
changeset
|
350 same format since the format string only needs to be compiled once. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
351 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
352 |
|
46556
8b718fc15f3d
Merged revisions 62490 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
45773
diff
changeset
|
353 Compiled Struct objects support the following methods and attributes: |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
354 |
|
46556
8b718fc15f3d
Merged revisions 62490 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
45773
diff
changeset
|
355 .. method:: pack(v1, v2, ...) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
356 |
|
46556
8b718fc15f3d
Merged revisions 62490 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
45773
diff
changeset
|
357 Identical to the :func:`pack` function, using the compiled format. |
|
8b718fc15f3d
Merged revisions 62490 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
45773
diff
changeset
|
358 (``len(result)`` will equal :attr:`self.size`.) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
359 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
360 |
|
46556
8b718fc15f3d
Merged revisions 62490 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
45773
diff
changeset
|
361 .. method:: pack_into(buffer, offset, v1, v2, ...) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
362 |
|
46556
8b718fc15f3d
Merged revisions 62490 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
45773
diff
changeset
|
363 Identical to the :func:`pack_into` function, using the compiled format. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
364 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
365 |
|
62309
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
366 .. method:: unpack(buffer) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
367 |
|
46556
8b718fc15f3d
Merged revisions 62490 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
45773
diff
changeset
|
368 Identical to the :func:`unpack` function, using the compiled format. |
|
62309
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
369 (``len(buffer)`` must equal :attr:`self.size`). |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
370 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
371 |
|
56002
fa91270b6087
Merged revisions 74821,74828-74831,74833,74835 via svnmerge from
Georg Brandl <georg@python.org>
parents:
52414
diff
changeset
|
372 .. method:: unpack_from(buffer, offset=0) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
373 |
|
46556
8b718fc15f3d
Merged revisions 62490 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
45773
diff
changeset
|
374 Identical to the :func:`unpack_from` function, using the compiled format. |
|
8b718fc15f3d
Merged revisions 62490 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
45773
diff
changeset
|
375 (``len(buffer[offset:])`` must be at least :attr:`self.size`). |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
376 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
377 |
|
46556
8b718fc15f3d
Merged revisions 62490 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
45773
diff
changeset
|
378 .. attribute:: format |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
379 |
|
46556
8b718fc15f3d
Merged revisions 62490 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
45773
diff
changeset
|
380 The format string used to construct this Struct object. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
381 |
|
46556
8b718fc15f3d
Merged revisions 62490 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
45773
diff
changeset
|
382 .. attribute:: size |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42604
diff
changeset
|
383 |
|
62309
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
384 The calculated size of the struct (and hence of the bytes object produced |
|
0f5d114eff01
Merged revisions 81947-81950,81955-81956 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
61867
diff
changeset
|
385 by the :meth:`pack` method) corresponding to :attr:`format`. |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42604
diff
changeset
|
386 |
