免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1501 | 回复: 0
打印 上一主题 下一主题

[C] LZW算法中字符编码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-29 11:23 |只看该作者 |倒序浏览
  1. #define BITS_PER_BYTE 8
  2. #define INITIAL_CODE_WIDTH 9
  3. #define Increment 3
  4. #define BITS 12

  5. unsigned int input_code(FILE *input)
  6. {
  7.     unsigned int return_value;
  8.     static int input_bit_count=0;
  9.     static unsigned long input_bit_buffer=0L;

  10.     while (input_bit_count <= 24)
  11.     {
  12.         input_bit_buffer |=
  13.         (unsigned long) getc(input) << (24-input_bit_count);
  14.         input_bit_count += 8;
  15.     }
  16.     return_value=input_bit_buffer >> (32-BITS);
  17.     input_bit_buffer <<= BITS;
  18.     input_bit_count -= BITS;
  19.     return(return_value);
  20. }

  21. void output_code(FILE *output,unsigned int code)
  22. {
  23.     static int output_bit_count=0;
  24.     static unsigned long output_bit_buffer=0L;

  25.     output_bit_buffer |= (unsigned long) code << (32-BITS-output_bit_count);
  26.     output_bit_count += BITS;
  27.     while (output_bit_count >= 8)
  28.     {
  29.         putc(output_bit_buffer >> 24,output);
  30.         output_bit_buffer <<= 8;
  31.         output_bit_count -= 8;
  32.     }
  33. }
复制代码
最近在看LZW算法,看到有这么两个函数,一个是将字符编码写入流, 一个从流中读取, 一直不是很明白两个函数的操作。请达人讲解下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP