// dqb 接口响应解码器(复刻页面 deStr+de:两字符一组 → 数值 → LZW 解压) // spe 接口=500×(c1-903)+(c2-903);acc 接口=550×(c1-809)+(c2-809) // 用法: cat 响应 | node dqb_decode.js (spe,默认) // cat 响应 | node dqb_decode.js acc (acc 附件) function deStr(t, off, mul) { var e = []; for (var s = 0; s + 1 < t.length; s += 2) e.push(mul * (t[s].charCodeAt() - off) + (t[s + 1].charCodeAt() - off)); return e; } function de(t) { // LZW 解压(字典从 256 起) var e, s, r, a, n = [], i = "", o = 256; for (e = 0; e < 256; e += 1) n[e] = String.fromCharCode(e); for (s = String.fromCharCode(t[0]), r = s, e = 1; e < t.length; e += 1) { a = t[e]; if (n[a]) i = n[a]; else { if (a !== o) return null; i = s + s.charAt(0); } r += i; n[o++] = s + i.charAt(0); s = i; } return r; } var fs = require("fs"); var isAcc = (process.argv[2] === "acc"); var input = fs.readFileSync(0, "utf-8"); var text = de(deStr(input.trim(), isAcc ? 809 : 903, isAcc ? 550 : 500)); process.stdout.write(text || "(解码失败)");