資源簡介
js 通過lz77壓縮文本上傳到后端,進行解壓,大文本上傳提交時很好的一個壓縮解壓的處理方式

代碼片段和文件信息
package?abc;
import?java.util.HashMap;
import?java.util.Map;
public?class?Lz77?{
public?static?char[]?NC=?“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789~!@#$%^&*()-=[];‘./_+{}|:\“<>?“.toCharArray();
public?static?Map?CN?=?new?HashMap();?
static{
for(int?i?=0;i CN.put(NC[i]i);
}
}
public?static?String?Lz77Decompress(char[]?input)?
{?
????/*LZ77解壓縮算法?-?Hutia?-?JS版*/?
?????
????/*變量聲明*/?
????int?p?=?0;?//掃描指針?
????int?len?=?input.length;?//輸入字符串的長度?
????StringBuffer?output=?new?StringBuffer();
????int?match_off?=?0;?//匹配位置的偏移量?
????int?match_len?=?0;?//發生匹配的長度?
?????
????/*循環掃描*/?
????for?(p=0;?p ????{?
????????if?(input[p]==?‘‘‘)?//如果發現前綴標記?
????????{?
????????????if?(input[p?+?1]?==?‘‘‘)?//如果是轉義前綴?
????????????{?
????????????????output.append(“‘“);?//直接輸出字符?“‘“?
????????????????p++;?//指針后移,跳過下一個字符?
????????????}?
????????????else?//如果是壓縮編碼?
????????????{?
????????????????match_off?=?C2N(input[p+1]+““+input[p+2]+input[p+3]);?//取出其?1-3?個字符,算出偏移量?
????????????????match_len?=?C2N(input[p+4]+““+input[p+5]);?//取出其?4-5?字符,算出匹配長度?
????????????????output.append(output.substring(match_off?match_off?+?match_len));
????????????????p?+=?5;?//指針后移,跳過下5個字符?
????????????}?
????????}?
????????else?//如果沒有發現前綴標記?
????????{?
????????????output.append(input[p]);?//直接輸出相應的字符?
????????}?
????}?
?????
????/*輸出*/?
????return?output.toString();?
}?
public?static?int?C2N(String?c)?//將?92?進制字符串(高位在右)轉換為?10?進制數字?
{?
char?[]ct?=?c.toCharArray();
????int?len?=?ct.length;?
????int?re?=?0;?
????for?(int?i=0;?i ????{
????????re?+=?CN.get(ct[i])?*?Math.pow(92?i);?
????}?
????return?re;?
}?
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4384??2013-11-26?10:43??lz77?.js
?????文件???????1964??2013-11-25?08:58??Lz77.java
?????文件???????7410??2013-11-22?10:01??lz77壓縮列子.html
-----------?---------??----------?-----??----
????????????????13758????????????????????3
- 上一篇:java commons lang3-3.2
- 下一篇:學生考勤信息管理系統
評論
共有 條評論