Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

296
Visualizações
Compresión Gzip: salida diferente para la misma entrada usando python gzip y js pako

Me he encontrado con un pequeño problema con la compresión gzip.

Digamos que comprimimos la letra 'a' con la biblioteca pako en javascript, de la siguiente manera:

 pako.gzip('a')

Esto devuelve la siguiente matriz de bytes:

 [31,139,8,0,0,0,0,0,0,3,75,4,0,67,190,183,232,1,0,0,0]

Ahora, si tomo esta matriz y la descomprimo en python, obtengo el resultado esperado:

 import gzip arr_from_pako = bytearray([31,139,8,0,0,0,0,0,0,3,75,4,0,67,190,183,232,1,0,0,0]) decompressed = gzip.decompress(arr_from_pako) print(decompressed) >>> b'a'

Sin embargo, si invierto el proceso y comprimo con gzip el resultado en python, obtengo un bytearray diferente:

 arr_from_python = list(gzip.compress(decompressed)) print(arr_from_python) >>> [31, 139, 8, 0, 123, 15, 138, 98, 2, 255, 75, 4, 0, 67, 190, 183, 232, 1, 0, 0, 0]

Lo que necesito hacer aquí es reproducir el resultado de pako.gzip en python. Supongo que las diferencias se deben a un nivel de compresión y sé que gzip lib en python te permite ajustarlo, pero probé todas las configuraciones y no pude obtener el resultado esperado.

¿Alguien puede ayudar?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No puedes, y no necesitas hacerlo. No hay problema.

  1. La diferencia en los ejemplos que das está solo en el encabezado gzip, donde Python está poniendo un tiempo de modificación y configurando algunos otros bytes en el encabezado con valores diferentes a los de pako. Puede usar mtime=0 en Python para deshacerse del tiempo de modificación, pero aún tendrá esas otras diferencias. ( 0, 3 vs. 2, 255 : esos son los indicadores XFL y OS en el encabezado).

  2. Puede reescribir manualmente el encabezado en Python para que sea igual que gzip. Sin embargo, eso aún no cumplirá su objetivo a largo plazo, una vez que esté comprimiendo cantidades razonables de datos. Entonces, incluso si obliga a que los encabezados sean iguales, los datos comprimidos pueden ser y probablemente serán diferentes. La única forma de asegurarse de que los datos comprimidos sean los mismos es que usted tenga personalmente el control de las bibliotecas utilizadas tanto en Python como en pako, asegúrese de que sean el mismo código fuente, la misma versión de ese código fuente y que sean utilizando exactamente los mismos parámetros de control. Dudo que lo seas, por lo que estás en una tontería para tratar de hacer que sean iguales.

  3. No hay necesidad de hacerlos iguales. Todo lo que necesita de un compresor sin pérdidas es compresión seguida de descompresión para darle exactamente lo que pone. Eso es todo. Tienes eso. Nunca hay ninguna garantía de la otra dirección, es decir, que puede obtener la descompresión seguida de la compresión para obtener lo mismo.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda