[Python] Re: doppio backslash non va

SMZE smze a eutelia.com
Dom 4 Feb 2007 11:47:22 CET


Il giorno sab, 03/02/2007 alle 10.51 +0100, Lawrence Oluyede ha scritto:
...
> 
> Continuo a non capire comunque, sii più chiaro e dettagliato ...
...

Provo a spiegare meglio:
Ho la necessità di dare significato a delle stringhe lette da file che
rappresentano dei valori esadecimali. Per esempio il file è del tipo

        ...
        03ff55a600
        556c9daa12
        ...

queste stringhe devono essere interpretate da varie convenzioni
(Big-Endian o Little-Endian; 1 byte con o senza segno, 2 byte con o
senza segno, 4 byte con o senza segno). Quindi, leggendo la
documentazione, mi pareva che unpack() facesse al caso mio. Infatti per
interpretare la prima stringa 03ff55a600 per esempio in formato
Big-Endian a gruppi di 1 byte con segno avrei fatto:

        >>> struct.unpack('>bbbbb','\x03\xff\x55\xa6\x00')
        (3, -1, 85, -90, 0)


Chiaramente ho bisogno di modificare la stringa di partenza nel formato
conforme a unpack(). E da qui scaturiscono le mie decine di mail. :-P.

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?

Grazie.








Maggiori informazioni sulla lista Python