huffman

所属分类:压缩解压
开发工具:C/C++
文件大小:37KB
下载次数:8
上传日期:2011-03-25 20:39:47
上 传 者823774584
说明:  一个huffman压缩解压算法C源码 极高的压缩比 能将1mb文件 压缩成400kb
(A huffman compression decompression algorithm C source high compression ratio can compress the file 400kb 1mb)

文件列表:
一个huffman压缩解压算法源码\HUF.C (29341, 2009-01-18)
一个huffman压缩解压算法源码\HUF.EXE (28892, 1991-04-25)
一个huffman压缩解压算法源码\UNHUF.C (15098, 2009-01-19)
一个huffman压缩解压算法源码\UNHUF.EXE (11082, 1991-04-25)
一个huffman压缩解压算法源码 (0, 2011-03-25)

readme.txt April 25, 1991 Huffman compression code compressor and decompressor in Borland C++ 2.0 by Shaun Case, April 1991 Enclosed in this archive are two C programs that implement Huffman code compression. huf.c <--- compress a file using huffman compression unhuf.c <--- decompress a file compressed with huf.c Both programs, their source code and executable code, are in the public domain. You may use either in any way you want. You can sell them, use them in your own pd, freeware, shareware, or commercial application, without fee, licsence, or royalty of any kind. You don't even have to put my name on it, if you don't want to, although that would be a nice touch. You should know two things before using these programs: 1) I am completely unresponsible for any liability arising from use of these programs, either in executable or source form. They are for use as-is, without any kind of waranty or guarantee, including but not limited to FITNESS FOR A PARTICULAR PURPOSE, or merchantability, or whatever the hell it is. If you use these program, you assume all liability. Use of these programs is acceptance of assumption of any and all liability, and of the complete freedom of legal responsibility for damages of any nature, including a large malevolent, rabid fruit bat flying into your hair in the night and chewing a hole in your neck, of the author. 2) There are much better compression schemes available, notably LZW, and possibly RLE, depending on your data. LZW, RLE, and this Huffman implementation are lossless, and are typically not suitable for compressing digital video in real time. That aside, I'd like to say a few things about the source code: 1) The compressor is non-optimal in several ways: -- the compressed filesize estimation is broken -- it uses floating point -- it is full of unnecessary code -- there are a couple of easy optimizations that could be made -- it uses global variables -- there is a function call for every character processed. One of the reasons it is in this condition is that, for my application, the data was only going to be compressed once, but uncompressed repeatedly. So, if the compressor was a little un-optimal, that was fine. 2) It works, as far as I can tell, perfectly. It's bound to have a few bugs in it somewhere, but it seems to work with: -- pretty large files (~600k) -- files that contain no characters -- files that contain less than all 256 characters. 3) The original filename is stored in the *.huf file, and is used when recreating the original file. 4) It was written in Borland C++. If you want to compile using another compiler, especially one that isn't native to MS-DOS, have fun. The huf program writes out some shorts and a long or two binarily, whatever byte ordering your machine normally uses, so data is typically not interchangable. If you are running on a Motorola processor, or on a Vax, you will need to fix the byte ordering if you want files to be interchangeable with files created under MS-DOS. 5) It was written in a 132 X 43 column SVGA mode, so it may look funny if you try to edit it on your 80X25 setup, or try to print it on an 80 column printer. 6) Datafile format: All 16/32 bit quantities in Intel format 13 bytes : original filename (8.3 + "\0") 16 bits : number of array elements needed, N (N == 511 means 512 array elements -> 0..511) 32 bits : size of uncompressed original data in bytes N * 6 bytes : Array elements in order 0 .. N struct decode_table_element { char letter; 8 bits char spare; 8 bits short left; 16 bits short right; 16 bits } : compressed data, effectively a bit stream I will not be supporting this software, but if you wish to contact me, you may reach me by email at one of the following addresses: Internet : atman%ecst.csuchico.edu@RELAY.CS.NET Fidonet : Shaun Case of 1:119/666.0 WWIVnet : 1@9651 I hope you find this code useful or informative, or maybe both. -- Shaun

近期下载者

相关文件


收藏者