From: Raf Coremans Date: 2007-05-16T07:19:24+09:00 Subject: Re: [QUIZ] Huffman Encoder (#123) 2007/5/15, Ball, Donald A Jr (Library) : > > 2007/5/15, Ball, Donald A Jr (Library) : > > > > > I also tried writing a binary encoder which packs and > > unpacks the bit > > > strings generated by my string encoder, but it fails to > > decompress the > > > entire text for long files, e.g. the program source code > > itself. I'm > > > unsure why, perhaps someone more experienced in this arena > > can suggest > > > why. > > > > Perhaps because the file you want to encode already contains > > your end-marker. The decoder stops when it encounters the > > first end-marker (line 161). A binary file would not be > > unlikely to contain a NULL character somewhere. > > That was my first thought, but I threw in a check for the existence of > NULL characters in the frequency hash before merging the EOS=>0 hash, > and it did not complain. Besides, the file I'm trying to decompress is > the ruby source of my quiz solution, which is just plain ol' text. > > - donald > Strange... I get this: Encoding-decoding paste-61871.rb: $ ruby -w paste-61871.rb -b -f paste-61871.rb | ruby -w paste-61871.rb -b -d > ref $ cmp paste-61871.rb ref =>Identical Encoding-decoding a binary file: $ ruby -w paste-61871.rb -b -f dilbert2073317070515.gif | ruby -w paste-61871.rb -b -d > ref $ cmp dilbert2073317070515.gif ref cmp: EOF on ref $ hexdump -C ref 00000000 47 49 46 38 39 61 58 02 d5 |GIF89aX..| 00000009 $ hexdump -C dilbert2073317070515.gif | head -n 1 00000000 47 49 46 38 39 61 58 02 d5 00 c4 00 00 58 58 58 |GIF89aX......XXX| => Encoded-decoded terminates just before first NULL character in original file Regards, Raf