[Python] funzione unpack
Daniele Varrazzo
piro a develer.com
Mer 13 Gen 2010 12:17:02 CET
On Tue, 12 Jan 2010 20:43:29 +0100, Ernesto <e.picardi a unical.it> wrote:
> Ciao a tutti,
>
> mi chiedevo se in python ci fosse una funzione simile alla seguente:
>
> $bits = unpack("B32",$value);
>
> che permette di ottenere una bit string.
Credo di no nella libreria standard, ma puoi usare qualcosa tipo questa:
def int2bin(n, _hex2bin={
"0":"0000", "1":"0001", "2":"0010", "3":"0011",
"4":"0100", "5":"0101", "6":"0110", "7":"0111",
"8":"1000", "9":"1001", "A":"1010", "B":"1011",
"C":"1100", "D":"1101", "E":"1110", "F":"1111"}
):
return "".join(_hex2bin[i] for i in '%X' % n).lstrip('0') or '0'
In [5]: int2bin(1024)
Out[5]: '10000000000'
Non funziona coi negativi, ma se servissero è facile correggerla.
> Ho provato con il modulo struct anche se non sembra ci sia qualcosa di
> equivalente. Esiste la funzione struct.unpack() ma non restituisce la
> stessa cosa.
Le funzioni in struct possono comunque farti comodo, per esempio per
convertire da un blocco di dati a interi (usando la giusta endianness) e da
questi in binario con questa funzione.
> Come posso, inoltre, verificare se il sistema su cui sto lavorando è
> little-endian o big-endian?
http://docs.python.org/library/sys.html#sys.byteorder
--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
Maggiori informazioni sulla lista
Python