伊莉討論區

標題: 如何對ASCII碼進行RLE編碼 [打印本頁]

作者: bright2    時間: 2011-12-23 10:32 AM     標題: 如何對ASCII碼進行RLE編碼

最近有想用C做ASCII碼進行RLE編碼

但目前卡在轉了ASCII碼
但不知道怎樣做RLE編碼

RLE:Run Length Encoding (遊程長度編碼)  
ABBBBBBBBBC---->A8BC

希望可以獲得幫助~3Q
作者: B1DE49FC    時間: 2011-12-23 11:32 AM

一次讀一個字元
讀到相異的字元再來做輸出
不知道是不是你要的

void scan(){
   if( in[index] != '\0' ){
      if( in[index] == ch ){
         count++;
         index++;
         scan();
      }else{
         print();
         count=1;
         ch = in[index];
         index++;
         scan();
      }
   }else{
      print();
   }
}


完整程式碼請參考附加檔案
[attach]67787755[/attach]
作者: kaworucloud    時間: 2011-12-23 06:34 PM

發現你的範例明明有 9 個 B 卻要顯示 8B?
  1. int main(){
  2.     char* szData = "ABBBBBBBBBC";
  3.     char lastChar = szData[0];
  4.     int counter = 0;
  5.     for( int i=0; szData[i]; ++i ){
  6.         if( szData[i] == lastChar ){
  7.             ++counter;
  8.         }
  9.         else{
  10.             if( counter > 1 ){
  11.                 cout << counter;
  12.             }
  13.             cout << lastChar;
  14.             lastChar = szData[i];
  15.             counter = 1;
  16.         }
  17.     }
  18.     if( counter > 1 ){
  19.         cout << counter;
  20.     }
  21.     cout << lastChar;

  22.     return 0;
  23. }
複製代碼





歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!