我有一个Node / ExpressJS服务器,其客户端软件只能访问“压缩”(LZW)算法进行解压缩。
据我所知,节点12.X zlib library不支持LZW。在npm中,似乎也没有任何模块可以以快速,通用的方式处理LZW,而其内容要大于几百个字节。
有人知道在Node服务器上有效且理想地在本地使用LZW的方法吗? Zlib中的某些东西与LZW兼容吗?我的用例是要处理多达几十千字节的数据。
一切都在Docker中,因此我可以在主机上安装ncompress
并使用child_process
直接调用它,或进行某种操作,但这似乎很麻烦。
答案 0 :(得分:0)
你可以在没有任何外部库的情况下做到这一点。 这是两个 LZW 编码和解码函数。
<块引用>function en(c) { var x = "charCodeAt", b, e = {}, f = c.split(""), d
= [], a = f[0], g = 256; for (b = 1; b < f.length; b++) c = f[b], null != e[a + c] ? a += c :(d.push(1 < a.length ? e[a] :ax),
e[a + c] = g, g++, a = c); d.push(1 < a.length ? e[a] :ax);
for (b = 0; b < d.length; b++) d[b] = String.fromCharCode(d[b]);
返回 d.join(""); }
function de(b) { var a, e = {}, d = b.split(""), c = f = d[0], g = [
c], h = o = 256; for (b = 1; b < d.length; b++) a =
d[b].charCodeAt(0), a = h > a ? d[b] :e[a] ? e[a] :f + c,
g.push(a), c = a.charAt(0), e[o] = f + c, o++, f = a;返回
g.join(""); }
请注意:这些函数仅适用于字符串。 来源:https://gist.github.com/JavaScript-Packer/bbf68a4dc0e1fd102221