[Python] Re: doppio backslash non va
Nicola Larosa
nico a tekNico.net
Dom 4 Feb 2007 12:08:50 CET
SMZE wrote:
> Posso anche aver frainteso come funzioni unpack() perchè ad esempio:
>
> >>> struct.unpack('>BBBBB','\x03\xff\x55\xa6\x00')
> (3, 255, 85, 166, 0)
>
> >>> struct.unpack('<BBBBB','\x03\xff\x55\xa6\x00')
> (3, 255, 85, 166, 0)
>
> per la prima istruzione tutto ok. Ma come mai la seconda mi mantiene gli
> stessi valori?
La differenza tra le due format string è il byte order, big endian nella
prima, little endian nella seconda. Il concetto di byte order si applica a
tipi di dati multibyte: tu invece sopra hai specificato "B", cioé "unsigned
char". In C, questo tipo è costituito da *un* byte: essendo uno solo non
può essere ordinato. :-)
Il byte order si applica a tipi multibyte, come ad esempio gli "unsigned long":
>>> struct.unpack('>L','\x03\xff\x55\xa6')
(67065254L,)
>>> struct.unpack('<L','\x03\xff\x55\xa6')
(2790653699L,)
--
Nicola Larosa - http://www.tekNico.net/
Legally or otherwise, domestically or from overseas, flawless copies can
and will be obtained. And the modern European pirates who retrieve and
share our cultural gold - gold that the owners had forsaken - are not
scoundrels who defy the law but heroes who advance its ultimate aim.
-- Peter Guttman, July 2006
Maggiori informazioni sulla lista
Python