
Sumar dos buffers, sin arrastre
Publicado por e (4 intervenciones) el 24/07/2014 11:24:14
para Python 2.7
Tengo dos strings con datos binarios y quiero sumarlos (no concatenarlos) obteniendo un tercer string del mismo tamaño donde cada byte es el resultado de la suma de los dos bytes correspondientes módulo 256.
Más claro:
string a, 3 bytes:
ord(a[0])=200 ord(a[1])=10 ord(a[2])=1
string b, 3 bytes:
ord(b[0])=22 ord(b[1])=250 ord(b[2])=255
string resultado suma ss, 3 bytes:
ord(ss[0])=222 ord(ss[1])=4 ord(ss[2])=0
Evidentemente si itero sobre los dos strings (ord(a[i])+ord(b[i])) % 256 obtengo el resultado buscado ord(ss[i]) , pero de una forma bastante ineficiente. El tamaño de los strings es de varios cientos de megabytes lo que alarga el tiempo de proceso.
¿Alguna función que lo realice más rápido?
¿Tal vez usando alguna librería gráfica o utilizando matrices con las librerías de scipy?
Tengo dos strings con datos binarios y quiero sumarlos (no concatenarlos) obteniendo un tercer string del mismo tamaño donde cada byte es el resultado de la suma de los dos bytes correspondientes módulo 256.
Más claro:
string a, 3 bytes:
ord(a[0])=200 ord(a[1])=10 ord(a[2])=1
string b, 3 bytes:
ord(b[0])=22 ord(b[1])=250 ord(b[2])=255
string resultado suma ss, 3 bytes:
ord(ss[0])=222 ord(ss[1])=4 ord(ss[2])=0
Evidentemente si itero sobre los dos strings (ord(a[i])+ord(b[i])) % 256 obtengo el resultado buscado ord(ss[i]) , pero de una forma bastante ineficiente. El tamaño de los strings es de varios cientos de megabytes lo que alarga el tiempo de proceso.
¿Alguna función que lo realice más rápido?
¿Tal vez usando alguna librería gráfica o utilizando matrices con las librerías de scipy?
Valora esta pregunta


0