我如何LZ77,LZM等算法压缩字符串?

PHP 和 JS 相互传输压缩字符串

有个小项目,专门PHP和小程序传输像素数据,数据如下

String = "100100FF00AA200300F1F1F1150001F9F9F9"
分解 100100FF00AA 200300F1F1F1 150001F9F9F9
意思 100x100 RGB FF00AA

组成 字符串的只有16进制

参考 LZW算法压缩字符串数据

function LZW_compress(text){
    const dict = { 0: '零', 1: '一', 2: '二' }, result = []
    let temp = "", UTFCode = 25165 // 汉字笔画较少的区间开始
    text.split("").reduce((prev, cur)=>{
        const string = prev + cur
        if(dict[string]) temp = string;
        else{
            dict[string] = String.fromCharCode(UTFCode++);
            result.push(dict[prev]);
            temp = cur.toString();
        }
        return temp
    }, "")
    if(temp) result.push(dict[temp]);
    return result.join("");
}

现在 有点小蒙圈了 不知道怎么压缩好了,请大家给点算法思路,谢谢大家

阅读 1.7k
1 个回答

后面弄了一版本决绝方案:服务器开压缩
引入 pako 进行 处理:
pako包是一个大包:其中还可以分出 解压和压缩
pako_deflatepako_inflate 你从 任意一个JSCDN服务上都能找到

你前端只用到解压缩 只使用pako_deflate这个即可,没必要引入pako.min

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏