基于统计的压缩算法:游程编码

1.游程编码概念

  游程编码又称“运行长度编码”或“行程编码”,是一种统计编码,该编码属于无损压缩编码。

2.基本原理

  用一个符号值和串长代替具有相同值的连续符号,使符号长度少于原始数据的长度。

  如:     原始文本:dfffffeeeeettttrrrrttttt

    游程编码后文本:d1f5e5t4r4t5

 3.代码示例

 1 #include <stdio.h>

 2 #include <string.h>

 3 int main()

 4 {

 5     char textBefore[100] ="dfffffeeeeettttrrrrttttt";

 6     char textAfter[100];

 7     memset(textAfter,0,sizeof(textAfter));

 8 

 9     char c;

10     int num,i,j;

11     for(i=0;i<strlen(textBefore);){

12         c   = textBefore[i];    ///临时保存字符

13         num = 1;    ///保存个数

14         for(j=i+1;j<strlen(textBefore);j++){

15             if(c == textBefore[j])

16                 num++;

17             else

18                 break;

19         }

20         i = j;

21 

22         sprintf(textAfter,"%s%c",textAfter,c);

23         sprintf(textAfter,"%s%d",textAfter,num);

24     }

25     printf("textBefore : %s\n",textBefore);

26     printf("textAfter  : %s\n",textAfter);

27     return  0;

28 }

代码输出:

  基于统计的压缩算法:游程编码

 

参考:

http://zh.wikipedia.org/wiki/%E6%B8%B8%E7%A8%8B%E7%BC%96%E7%A0%81

http://baike.baidu.com/view/721796.htm?fr=aladdin

(方法简单也是有名字的)

你可能感兴趣的:(算法)