Alle 10:47, domenica 4 febbraio 2007, SMZE ha scritto: > 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 > ... > > [...]
se ho capito bene, la prima parte del tuo problema è trasformare la stringa : "03ff55a600" nella stringa: "\x03\xff\x55\xa6\x00" Poiché in Python le stringhe sono oggetti immutabili, conviene passare attraverso le liste: 1. trasformare la stringa in lista, 2. elaborare la lista, 3. ritrasformare la lista in stringa. Ecco alcuni modi per risolvere il problema. 1. Orribile: >>> n="03ff55a600" >>> l=list(n) >>> sep="\\x" >>> for i in xrange(0, len(l)+3, 3): l.insert(i, sep) >>> s="".join(l) >>> print s \x03\xff\x55\xa6\x00 2. Con un ciclo: >>> n="03ff55a600" >>> sep="\\x" >>> ls=[] >>> for i in xrange(0, len(n), 2): ls.append(n[i:i+2]) >>> s=sep+sep.join(ls) >>> print s \x03\xff\x55\xa6\x00 3. Con la costruzione di liste: >>> n="03ff55a600" >>> sep="\\x" >>> ls=[n[i:i+2] for i in xrange(0, len(n), 2)] >>> s=sep+sep.join(ls) >>> print s \x03\xff\x55\xa6\x00 4. Eliminando un po' di variabili intermedie: >>> n="03ff55a600" >>> sep="\\x" >>> s=sep+sep.join([n[i:i+2] for i in xrange(0, len(n), 2)]) >>> print s \x03\xff\x55\xa6\x00 > Grazie. Prego Daniele
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python