Skip to content

About

JCE / Tars

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

jce-viewer

腾讯 JCE 字节流的可视化解析器。

把一段 JCE 数据(hex 或 base64)粘进去,得到三样东西:

  1. 原文标注:逐字节标出 head(tag|type) / 长度字段 / 值 / STRUCT_END,悬停看归属字段
  2. JSON 解析:tag → value 嵌套结构
  3. 逐字段表:路径 · tag · 类型 · 偏移 · 长度 · 值;点击任意行高亮原文对应字节

界面

快速开始

npm install       # 只装 vite(devDependency)
npm run dev       # 打开 http://localhost:5173
npm test          # 解析器回归测试(node --test)
npm run build     # 产出 dist/

JCE 编码约定

本项目实现的是腾讯 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。

About

JCE / Tars

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages