Hacker News Re-Imagined

Decompressing a Gzip File by Hand

  • 78 points
  • 9 hours ago

  • @thomastay
  • Created a post
  • • 10 comments

Decompressing a Gzip File by Hand


@userbinator 2 hours

Replying to @thomastay 🎙

One of the mantras I used when I was a programming instructor was "How can you know what to tell the computer to do, if you can't do it yourself?" This is a great example of that.

Don’t forget that the huffman codes are packed LSB to MSB, but are to be interpreted as an integer in big endian format. Why this insanity?

Because that's what Phil Katz did. I vaguely remember reading about that years ago, and believe it had to do with how he implemented it; not as canonical table lookup, but as explicit tree-walking, since the former hadn't really been invented yet and the latter would fit within the memory constraints of a 16-bit system (DOS on a PC).

Reply


@ryan-duve 7 hours

Replying to @thomastay 🎙

This was a great read. I look forward to the Part II teased at the end. In addition to deep diving on the Huffman codes, I hope you find a way to include an explanation of when to read left-to-right vs right-to-left, which is what tripped me up the most in this article.

Reply


@oldpatricka 2 hours

Replying to @thomastay 🎙

I love this! Great post.

Reply


@Rendello 6 hours

Replying to @thomastay 🎙

For anyone looking to write their own Deflate/Gzip/Zlib, I would recommend looking at the little program called `infgen`:

> infgen is a deflate stream disassembler. It will read a gzip, zlib, or raw deflate stream, and output a readable description of the contents.

https://github.com/madler/infgen

Reply


About Us

site design / logo © 2021 Box Piper