[python] Chyba v modulu struct

Jaroslav Pachola j_p na centrum.cz
Úterý Prosinec 6 16:21:00 CET 2005


Ahoj, 

Dne Tuesday 06 December 2005 12:56 Jan Troler napsal(a):
> Ahoj Vsem,
> narazil jsem na nasledujici chovani modulu struct:
>
> In [12]: struct.pack('HI',8,1), struct.calcsize('HI')
> Out[12]: ('\x08\x00\x00\x00\x01\x00\x00\x00', 8)
>
> In [13]: struct.pack('IH',8,1), struct.calcsize('IH')
> Out[13]: ('\x08\x00\x00\x00\x01\x00', 6)
>
> Je videt, ze formatovy retezec 'HI' a 'IH' dava rozdilny vysledek.
> Zkouseno na Python 2.3.4. Vite o tom nekdo neco?
>
> Honza

to podle me neni chyba, ale feature. Jestlize se kompilator rozhodne (a podle 
dokumentace to je mozne), ze ukladani 32 bitovych integeru zacne na adrese 
delitelne ctyrmi, tak bych ho u toho nechal. Dulezite je ale, aby unpack 
korektne vytahnul ta data zpet. Mimochodem, v tom prikladu asi mas chybku, 
chtel jsi mozna 

struct.pack('IH', 1, 8),

aby to bylo "zhruba totez". Ale to je asi jenom prehlednuti.

JP



Další informace o konferenci Python