论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

C语言教程-RLE压缩

文章类别:C语言程序设计 | 发表日期:2010-12-18 9:24:12

C语言教程-RLE压缩

21视频教程网收集整理

 

指的是 RLE (Run-Length Encoding 行程长度编码) 吧,算法我说一下,功课自己做。 

一般最流行的是用 7 位来表示长度的,第一个字节最高位标志后面的是压缩的数据还是没压缩的,置位代表后面的一个字节是要重复的部分,因为只用了 7 位,所以最长只有 127 个字节,没置位代表后面的没有压缩,直接输出,长度也是由低 7 为代表。 
----大概的伪代码---- 
while(!eof) { 
  read_data(ch); 
  if (count == 127) { 
    buffer[0] |= 0x7F; 
    write_buffer_to_file(buffer, 128); 
    buffer[0] = count = 0; 
  } 
  count++; 
  if (buffer[0] & 0x80) { 
    if (ch != last_read_char) 
      buffer[count] = last_read_char = ch; 
    else { 
      buffer[0] = 0x80 | count; 
      write_buffer_to_file(buffer, count+1); 
      buffer[0] = 0x81; 
      count = 1; 
      buffer[1] = last_read_char = ch; 
    } 
  } else { 
    if (ch == last_read_char) 
      buffer[0] |= ++count; 
    else { 
      buffer[0] = count; 
      write_buffer_to_file(buffer, count+1); 
      buffer[0] = 0; 
      count = 1; 
      buffer[1] = last_read_char = ch; 
    } 
  } 
}write_buffer_to_file(buffer, count+1); 
应该为: 
write_buffer_to_file(buffer, 2); 
抱歉了~~~以后再也不图快了~~

进入C语言程序设计视频教程专区

视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058