[Python-Dev] struct module docs vs reality (original) (raw)
Anders J. Munch ajm at flonidan.dk
Thu Jan 24 09:10:31 CET 2008
- Previous message: [Python-Dev] struct module docs vs reality
- Next message: [Python-Dev] struct module docs vs reality
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Gregory P. Smith wrote:
The documentation for the struct module says: http://docs.python.org/dev/library/struct.html#module-struct _" short is 2 bytes; int and long are 4 bytes; long long ( int64 on Windows) is 8 bytes" and lists 'l' and 'L' as the pack code for a C long. As its implemented today, the documentation is incorrect. On an LP64 host (pretty much any 64-bit linux, bsd or unixish thing) a long is 8 bytes.
You overlooked the words "Standard size and alignment are as follows" that start the quoted paragraph. It's a little confusing because standard size is not the default. The default is platform-specific sizes. Only if you start the format string with >, <, ! or = do you get standard sizes.
The reference documentation is correct as it stands, and, I suspect, so is the LP64 implementation. Doesn't struct.pack('>l',42) produce a 4-byte string on LP64?
The tutorial at http://docs.python.org/tut/node13.html#SECTION0013300000000000000000%3E has a bug though: the format string should use '<'.
I believe zipfile.py correctly uses '<' throughout.
regards, Anders
- Previous message: [Python-Dev] struct module docs vs reality
- Next message: [Python-Dev] struct module docs vs reality
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]