基於統計的壓縮演算法:遊程編碼
阿新 • • 發佈:2019-01-10
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