基线:全量源码首提(D1 版本控制落地,含第一轮优化 B1-B4/A1/A4/缩放修复)
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
// 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 || "(解码失败)");
|
||||
Reference in New Issue
Block a user