2009-10-06 2 views
5

Sto provando a convertire uno script Perl in python, e utilizza parecchi pacchetti diversi. Sono stato in grado di capire le differenze di caratteri nei "templates" per ognuno, ma ho un problema nel capire come gestire la mancanza di dichiarazione di lunghezza di Perl.Come posso convertire il formato 'Nc *' di Perl in struct.pack per Python?

esempio:

pack('Nc*',$some_integer,$long_array_of_integers); 

non vedo un analogo per questo "*" caratteristica in struct.pack, su Python. Qualche idea su come convertire questo in Python?

risposta

7

ne dici di questo?

struct.pack('>I', some_integer) + struct.pack('b'*len(long_array), *long_array) 
+0

Mi piace la tua idea di tenere tutto dentro il pack() metodo, ma ottengo "struct.error: pack richiede esattamente x gli argomenti" e non poteva ingannare in disimballaggio (no pun intended) la matrice . – ewall

+0

@wall: c'era un piccolo refuso, risolto il codice. – abbot

1

Il pacchetto di Perl utilizza il carattere '*' simile a quello delle espressioni regolari, ovvero un carattere jolly per più informazioni. Qui, ovviamente, significa più firmati.

In Python, devi solo scorrere la corda e concat i pezzi:

result = struct.pack('>L', some_integer) 
for c in long_array_of_integers: 
    result += struct.pack('b',c) 
Problemi correlati