vale pero hay un problema, necesito que los evalue de 2 en 2, de forma que un caracter diferente de 00 pueda ser 02 o 0f o5d, pero no 00 y ese es mi problema, a esta marcha lo unico que se me ocurre es hacer un bucle que vaya comparando 5 puntos consecutivos del texto evaluando cada uno si es igual a 00 o no, y poner dos estructuras en if una para el principio y otra para el final, y que si coincide la estructura guarde el punto del texto en la lista.
seria asi:
Código PHP:
def guardar(texto, archivo):
x=open(archivo, "w")
x.write(texto)
x.close()
return 0
def leer():
x = open("GameStringTable.data", "r")
texto = x.read()
x.close()
return texto
def cerono(carac):
if carac == "00":
resultado = True
else:
resultado = False
return resultado
texto = leer()
hexa = texto.encode("hex")
seguir = True
comienzo = [ ]
final = [ ]
limite = len(hexa)
punta = 0
com = True
fustificador = [True, True, True]
while seguir:
puntb = punta +2
puntc = puntb +2
puntd = puntc +2
caraca = hexa[punta:puntb]
caracb = hexa[puntb:puntc]
caracc = hexa[puntc:puntd]
fustificador[0] = cerono(caraca)
fustificador[1] = cerono(caracb)
fustificador[2] = cerono(caracc)
if fustificador == [ True , False, False] and com == True:
#Esto seria el comienzo de un texto
comienzo = comienzo + [puntb]
com = False
if fustificador == [ False, False, True] and com == False:
#Esto sera el finalde un texto
final = final + [puntc]
com = True
punta = punta + 2
if punta > limite :
seguir = False
seguir2 = True
nu = 0
limite2 = len(comienzo)
while seguir2:
frase = hexa[ comienzo[nu] : final [nu] ]
print frase
print frase.decode("hex")
nu = nu + 1
if nu > limite2:
seguir2 = False
Edito:
este codigo funciona correctamente... lo unico que tarda unos segundos en escanear todo el archivo