Remove ads
来自维基百科,自由的百科全书
運行長度編碼(英語:run-length encoding,縮寫RLE),又稱行程長度編碼或變動長度編碼法,是一種與資料性質無關的無失真資料壓縮技術,基於「使用變動長度的碼來取代連續重複出現的原始資料」來實現壓縮。
舉例來說,一組資料串"AAAABBBCCDEEEE",由4個A、3個B、2個C、1個D、4個E組成,經過變動長度編碼法可將資料壓縮為4A3B2C1D4E(由14個單位轉成10個單位)。
簡言之,其優點在於將重複性高的資料量壓縮成小單位;然而,其缺點在於─若該資料出現頻率不高,可能導致壓縮結果資料量比原始資料大,例如:原始資料"ABCDE",壓縮結果為"1A1B1C1D1E"(由5個單位轉成10個單位)。
顧名思義,利用4個位元來儲存整數,以符號C表示整數值。其可表現的最大整數值為15,因此,若資料重複出現次數超過15,便以「分段」方式處理。
假設某資料出現N次,則可以將其分成(N/15)+1段落來處理,其中N/15的值為無條件捨去。例如連續出現33個A:
原始資料:
AAAAAAAAAAAAAAA AAAAAAAAAAAAAAA AAA
壓縮結果:
15A 15A 3A
內部儲存碼:
1111 01000001 1111 01000001 0011 01000001
15 A 15 A 3 A
同4位元表示法的概念,其能表示最大整數為255。假設某資料出現N次,則可以將其分成(N/255)+1段落來處理,其中N/255的值為無條件捨去。
先使用一個暫存函式Q讀取第一個資料,接著將下一個資料與Q值比,若資料相同,則計數器加1;若資料不同,則將計數器存的數值以及Q值輸出,再初始計數器為,Q值改為下一個資料。以此類推,完成資料壓縮。
以下為簡易的演算法:
input:AAABCCBCCCCAA
for i=1:size (input) if(Q = input(i)) 計數器+1 else output的前項=計數器的值, output的下一項=Q值, Q換成input(i),計數器值換成0 end end
其方法為逐一讀取整數(以C表示)與資料(以B表示),將C與B的二進位碼分別轉成十進位整數以及原始資料符號,最後輸出共C次資料B,即完成一次資料解壓縮;接著重複上述步驟,完成所有資料輸出。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.