]> granicus.if.org Git - python/commitdiff
SF bug [#461674] struct 'p' format doesn't work (maybe)
authorTim Peters <tim.peters@gmail.com>
Sat, 15 Sep 2001 18:09:22 +0000 (18:09 +0000)
committerTim Peters <tim.peters@gmail.com>
Sat, 15 Sep 2001 18:09:22 +0000 (18:09 +0000)
Rewrote the 'p' description.

Doc/lib/libstruct.tex

index 6de67cccf5d88fc357249644a6c71c0d3e300551..8d0ae60e12b518621e7f0403db6d0366d4cb62f7 100644 (file)
@@ -94,13 +94,17 @@ For unpacking, the resulting string always has exactly the specified
 number of bytes.  As a special case, \code{'0s'} means a single, empty
 string (while \code{'0c'} means 0 characters).
 
-The \character{p} format character can be used to encode a Pascal
-string.  The first byte is the length of the stored string, with the
-bytes of the string following.  If count is given, it is used as the
-total number of bytes used, including the length byte.  If the string
-passed in to \function{pack()} is too long, the stored representation
-is truncated.  If the string is too short, padding is used to ensure
-that exactly enough bytes are used to satisfy the count.
+The \character{p} format character encodes a "Pascal string", meaning
+a short variable-length string stored in a fixed number of bytes.
+The count is the total number of bytes stored.  The first byte stored is
+the length of the string, or 255, whichever is smaller.  The bytes
+of the string follow.  If the string passed in to \function{pack()} is too
+long (longer than the count minus 1), only the leading count-1 bytes of the
+string are stored,  If the string is shorter than count-1, it is padded
+with null bytes so that exactly count bytes in all are used.  Note that
+for \function{unpack()}, the \character{p} format character consumes count
+bytes, but that the string returned can never contain more than 255
+characters.
 
 For the \character{I}, \character{L}, \character{q} and \character{Q}
 format characters, the return value is a Python long integer.