Open MTGG123 opened 6 days ago
Hola @MTGG123 !
No logro replicar el error que estás teniendo:
¿Quizás la versión de python con que pruebas los archivos es distinta entre sí?
Hola @MTGG123 !
No logro replicar el error que estás teniendo:
¿Quizás la versión de python con que pruebas los archivos es distinta entre sí?
Perdón, la versión de mi código no era la correcta, ahora si debería estar bien. De todas maneras, lo que hace el código simplemente es imprimir el diccionario donde están los datos y ahí se puede ver que los datos siguen como un byte (como sale en la primera imagen)
Revisando bien el código, pareciera que decode esta tomando los \x00 como espacios y no como un str vacío, por lo que al comparar el byte decodificado con el str original, estos no son iguales. Extrañamente usar strip() tampoco funciona
Te recomiendo utilizar el largo del mensaje para solucionar esto. Dado que tu conoces el largo del mensaje, puedes ir construyendo el mensaje hasta que logres completar el largo; a partir de ahí, sabrás que si hay bytes extras en el último chunk que recibiste, estos serán relleno de ceros.
Si tengo un mensaje de largo 33:
chunk_1[1:]
serán ceros de relleno, y no lo paso a través del encoder.Esta forma de abordarlo te permitiría descartar los bytes vacíos... me cuéntas si te sirve o si tienes otra duda.
Te recomiendo utilizar el largo del mensaje para solucionar esto. Dado que tu conoces el largo del mensaje, puedes ir construyendo el mensaje hasta que logres completar el largo; a partir de ahí, sabrás que si hay bytes extras en el último chunk que recibiste, estos serán relleno de ceros.
Si tengo un mensaje de largo 33:
- Tomo los primeros 32 bytes del chunk 0.
- Tomo el primer byte del chunk 1 -> completando el largo de 33
- Sé que los bytes desde
chunk_1[1:]
serán ceros de relleno, y no lo paso a través del encoder.Esta forma de abordarlo te permitiría descartar los bytes vacíos... me cuéntas si te sirve o si tienes otra duda.
Me funcionó, muchas gracias :)
Prerrequisitos
(Marcar colocando una
X
entre los corchetes los ítems que ya hiciste, así:"[X]"
)Duda
Holaa, hice un archivo con funciones para codificar y decodificar los mensajes enviados, pero a la hora de decodificar, guardo los datos en un dict y estos se guardan como un byte por mucho que haga decode y no entiendo porque pasa esto. Probe lo mismo en otro archivo y si me funciona.
De todas maneras hice un commit con mi codigo por si es util. Muchas gracias