Quiero poder contar la cantidad de veces que aparece "00" en una variable que contiene código hexadecimal.

Esto es para calcular la cantidad de bytes NULL contenidos en este código, por lo que tengo que contar cada 2 dígitos como 1.

48657920697420776f726b73000000000000000000000000000000000000

Utilizando el ejemplo de código hexadecimal establecido en una variable, he intentado dividirlo en una lista como

['48' '65' '79' etc]

Y luego contando pero no pude hacerlo funcionar

0
MPythonLearner 28 ago. 2014 a las 15:11

2 respuestas

La mejor respuesta

Suponiendo que pueda tener cadenas muy largas mientras cuenta los bytes NUL de un archivo binario, puede preferirse un enfoque basado en iterador:

>>> s="48657920697420776f726b73000000000000000000000000000000000000"
>>> sum(1 if x == ('0','0') else 0 for x in zip(*[iter(s)]*2))
18
2
Sylvain Leroux 28 ago. 2014 a las 11:20

Probar con:

line = '48657920697420776f726b73000000000000000000000000000000000000'
n = 2
list = [line[i:i+n] for i in range(0, len(line), n)]
list.count('00')

Puede ver una muestra funcional aquí

Espero que esto ayude,

1
albciff 28 ago. 2014 a las 11:15