huffman.h
上传用户:cjw5120
上传日期:2022-05-11
资源大小:5032k
文件大小:2k
源码类别:

网络截获/分析

开发平台:

Visual C++

  1. // Huffman1.h: interface for the CHuffman class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_HUFFMAN1_H__5D5E262B_0CA7_42A9_A1CC_C907153A2CF8__INCLUDED_)
  5. #define AFX_HUFFMAN1_H__5D5E262B_0CA7_42A9_A1CC_C907153A2CF8__INCLUDED_
  6. #define US 037
  7. #define RS 036
  8. #define END     256
  9. #define hmove(a,b) {(b).count = (a).count; (b).node = (a).node;}
  10. #if _MSC_VER > 1000
  11. #pragma once
  12. #endif // _MSC_VER > 1000
  13. class CHuffman  
  14. {
  15. public:
  16. CHuffman();
  17. virtual ~CHuffman();
  18. //New
  19. //解压
  20. char *_inp;
  21. char *_outp;
  22. int _origsize;
  23. short _dmaxlev;
  24. short _intnodes[25];
  25. char *_tree[25];
  26. char _characters[256];
  27. char *_eof;
  28. int ntIsarc(char *inbuff );
  29. int _decode( int inleft, char *outbuff );
  30. int ntDecode(char *outbuff, char *inbuff );
  31. void ntXORcode(char *outbuff, char *inbuff, long lSize );
  32. //压缩
  33. struct  _heap {
  34.         long count;
  35.         int node;
  36. } _heap[ END+2 ];
  37. union FOUR {
  38. struct { long lng; } lint;
  39. struct { char c0, c1, c2, c3; } chars;
  40. };
  41. long    _count[ END+1 ];
  42. union   FOUR _insize;
  43. int     _diffbytes;
  44. int     _maxlev;
  45. int     _levcount[ 25 ];
  46. int     _lastnode;
  47. int     _parent[ 2*END+1 ];
  48. char    _length[ END+1 ];
  49. long    _bits[ END+1 ];
  50. long    _inc;
  51. union   FOUR _mask;
  52. //char  *_maskshuff[4] = {&(_mask.chars.c3), &(_mask.chars.c2),&(_mask.chars.c1), &(_mask.chars.c0)};
  53. char  *_maskshuff[4];
  54. int _n_;
  55. int ntGetorig(char *inbuff );
  56. int ntEncode(char *outbuff, char *inbuff, int buflen );
  57. void _input (char *inbuff, int buflen );
  58. int _output(char *outbuff,char *inbuff, int buflen );
  59. void _heapify(int i );
  60. };
  61. #endif // !defined(AFX_HUFFMAN1_H__5D5E262B_0CA7_42A9_A1CC_C907153A2CF8__INCLUDED_)