Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

295
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!