Hola, tenía que convertir un long a un string, para ello iba a utilizar una función de pycrypto
el meollo del asunto lo hace el siguiente código s = '' n = long(n) pack = struct.pack while n > 0: s = pack('>I', n & 0xffffffffL) + s n = n >> 32 y he visto que suman strings, yo tenía entendido que los strings son inmutables, y que para añadir caracteres a un string hay que volver a asignar memoria y volver a copiarlo entero. Probé a hacer lo mismo con cStringIO.StringIO r=cStringIO.StringIO() pack = struct.pack while n: r.write(pack('>I', n & 0xffffffffL)[0]) n = n >> 32 haciendo un test con longs de 500bytes y 10000 iteraciones su código gana por bastante StringIO.write real 0m0.956s user 0m0.940s sys 0m0.016s string real 0m0.696s user 0m0.680s sys 0m0.012s y este con longs de 5000 bytes stringIO real 0m11.296s user 0m11.289s sys 0m0.004s string real 0m9.753s user 0m9.721s sys 0m0.036s ¿Alguién sabe a que se debe esto? ¿cúando se deben usar strings y cuando StringIO? Gracias.
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/