腾讯 JCE 字节流的可视化解析器。
把一段 JCE 数据(hex 或 base64)粘进去,得到三样东西:
- 原文标注:逐字节标出
head(tag|type)/ 长度字段 / 值 /STRUCT_END,悬停看归属字段 - JSON 解析:
tag → value嵌套结构 - 逐字段表:路径 · tag · 类型 · 偏移 · 长度 · 值;点击任意行高亮原文对应字节
npm install # 只装 vite(devDependency)
npm run dev # 打开 http://localhost:5173
npm test # 解析器回归测试(node --test)
npm run build # 产出 dist/本项目实现的是腾讯 JCE(与 protobuf/TLV 都不同),已用真实样本逐字节验证:
head = (tag << 4) | type 高 4 位 tag,低 4 位 type
| type | 含义 | 载荷 |
|---|---|---|
| 0 | BYTE | 1 字节 |
| 1 | SHORT | 2 字节 |
| 2 | INT | 4 字节 |
| 3 | LONG | 8 字节 |
| 4 / 5 | FLOAT / DOUBLE | 4 / 8 字节 |
| 6 | STRING1 | 1 字节长度 + UTF-8 |
| 7 | STRING4 | 4 字节长度 + UTF-8 |
| 8 | MAP | 2 字节项数,每项 = 键(head+值) + 值(head+值) |
| 9 | LIST | 4 字节元素数,每元素 = head + 值 |
| 10 | STRUCT_BEGIN | 直到 STRUCT_END |
| 11 | STRUCT_END | 零载荷,不比 tag(遇即结束) |
| 12 | ZERO | 零载荷 |
| 13 | SimpleList | 1 字节元素数 |
- 数值一律大端;
LONG用BigInt承载,避免时间戳/哈希丢精度 - MAP 条目的键固定写成
0x00+ 1 字节 id,值固定0x16(STRING1) / 超 255 字节自动切0x17(STRING4) - 结构体字段的 tag 是字段序号,按升序排列 —— 所以同样是字符串,会见到
0x06/0x16/0x26/0x36等不同 head - 数据在末尾被截断时标记
truncated并立即收手,不会把残余字节续读成假条目
index.html 页面骨架
src/main.js 入口:把解析/渲染/主题接起来
src/jce/parser.js JCE 解析器(纯逻辑,可单独 import)
src/jce/view.js hex 标注 / JSON 着色 / 字段表 / 统计条
src/jce/theme.js 浅深主题:跟随宿主 --foreground,可手动切换
src/style.css 两套调色板(GitHub 色系)
test/parser.test.js 回归测试
docs/screenshot.png README 演示图
优先读取宿主环境注入的 --foreground 判断明暗;无宿主变量时跟随系统 prefers-color-scheme;右上「◐ 主题」可手动切换,选择记入 localStorage。
