• 大小: 6KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-09
  • 语言: Java
  • 标签: lz77  js  java  

资源简介

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


评论

共有 条评论