Problem with 'struct' module
Matt Feinstein
nospam at here.com
Tue Jun 14 10:37:12 EDT 2005
On Tue, 14 Jun 2005 14:24:56 -0000, Grant Edwards <grante at visi.com>
wrote:
>
>Your example is not using standard alignment. It's using
>native alignment:
>
> By default, C numbers are represented in the machine's native
> format and byte order, and properly aligned by skipping pad
> bytes if necessary (according to the rules used by the C
> compiler).
>
> Alternatively, the first character of the format string can
> be used to indicate the byte order, size and alignment of
> the packed data, according to the following table:
>
> Character Byte order Size and alignment
> @ native native
> = native standard
> < little-endian standard
> > big-endian standard
> ! network (= big-endian) standard
>
> If the first character is not one of these, "@" is assumed.
>
> Native byte order is big-endian or little-endian, depending
> on the host system. For example, Motorola and Sun
> processors are big-endian; Intel and DEC processors are
> little-endian.
>
> Native size and alignment are determined using the C compiler's
> sizeof expression. This is always combined with native byte
> order.
>
> Standard size and alignment are as follows: no alignment is
> required for any type (so you have to use pad bytes); short is
> 2 bytes; int and long are 4 bytes; long long (__int64 on
> Windows) is 8 bytes; float and double are 32-bit and 64-bit
> IEEE floating point numbers, respectively.
>
> Note the difference between "@" and "=": both use native
> byte order, but the size and alignment of the latter is
> standardized.
Thanks. I clearly missed the point of the explanation...
Matt Feinstein
--
There is no virtue in believing something that can be proved to be true.
More information about the Python-list
mailing list