协议与二进制序列化

MessagePack 解码器看清字节背后的真实类型

粘贴十六进制、Base64 或十进制字节,也可打开本地文件;切换方向即可编码标准 JSON。

MessagePack 解码器

输入

结果

字节和文件只在此浏览器处理,不上传。

选项

粘贴字节或打开文件以检查一个 MessagePack 值。

从缓存或接口日志拿到一段二进制时,肉眼无法分辨字段和类型。MessagePack 解码器先展开嵌套树,再让你核对 JSON 预览。

单纯的 MessagePack 转 JSON 容易把 bin 当文本、把 64 位 ID 舍入,或忽略第一个值之后的字节。这里保留这些线索,也能用 JSON 转 MessagePack 检查普通样本。

为什么用 MessagePack 解码器

先看类型,再看方便复制的 JSON。

类型树保留关键差别

MessagePack 解码器把字符串、原始 bin 字节、扩展编号及精确的大整数分开显示。JSON 预览对无法原生表达的值加标记,排查时不会把证据磨平。

字节序列分成文本、原始二进制、扩展值和长整数四条支路。

精确指出多出的字节

一个完整值后若还有数据,工具指出首个多余字节的偏移;截断也给出位置。这样能区分拼接消息与干净的单值负载。

结构化对象结束后仍有一组字节,琥珀色标记指出分界。

先确认格式,再导出结果

01

选择实际的文本表示

默认按十六进制读取;Base64 或十进制数组需要手动切换,短串不会自动猜格式。本地文件按原始字节读取。 在线解码前先确认输入到底是哪种文本表示,十六进制查看时尤其要留意成对的数字。

  • 示例含 bin、未知扩展和大整数,可用来对照树节点。
02

决定何时重新计算

自动处理在停止输入 350 毫秒后运行;关闭后出现操作按钮,也可按 Ctrl/Cmd+Enter。改动输入或格式会立即禁用旧结果导出。

  • 树与 JSON 预览之间切换不会重解码。
03

核对类型后再下载

树中查看节点类型、起始偏移和长度;JSON 预览用于阅读。编码方向下载的是实际 .msgpack 字节文件。

  • 扩展值的预览标记不是反向编码指令。

检查结构,也生成真正的字节

嵌套结构树

逐层展开映射键与数组索引;每个节点显示起始字节和编码长度,长结果每批展示 100 行。

二进制与扩展不丢失

bin 保持原始字节;未知 ext 保留有符号编号和完整负载。标准时间戳还显示秒、纳秒和原始内容。

双向转换和文件导出

把普通 JSON 编成 MessagePack,复制十六进制、Base64 或字节数组,或下载真正的二进制文件。

转换时需要守住的边界

每次只解析一个完整值
MessagePack 解码器不会静默忽略首值后的字节;拼接的多消息流会在第一个多余字节处报错,需要先拆分。
未知扩展保持原样
只有 -1 时间戳有通用定义。业务扩展只能显示类型编号与负载,不会猜测 UUID、日期或自定义对象。
JSON 预览不能无损往返
JSON 没有 bin、ext、非字符串映射键和原生 64 位整数。预览标记只用于阅读,编码器只接受标准 JSON。
浏览器上限明确
输入最多 1 MiB,嵌套最多 64 层、节点最多 10000 个;超限报错,不截取一半冒充完整结果。

MessagePack 解码器常见问题

str 和 bin 有什么区别?

str 用于 UTF-8 文本,bin 用于任意字节。树会将二者分开,避免把不可打印的二进制强行解成字符串。

为什么大整数在 JSON 里变成了字符串?

超过 JavaScript 安全整数范围的值在树中保持精确,在 JSON 预览里用带标记的十进制字符串显示,不会悄悄丢位。

时间戳是怎么解码的?

类型 -1 的时间戳按 32、64 或 96 位规范读取,并保留秒、纳秒和原始字节;日期只作辅助显示。

剩余字节的提示是什么意思?

这表示一个值已经结束,但输入后面还有字节。错误会指出第一个剩余字节的偏移,常见原因是拼接消息或外层帧。

除时间戳外的扩展类型呢?

除时间戳外的扩展由写入应用定义。工具保留类型号和原始十六进制负载,不猜测业务含义。

还有疑问?

现在试用 MessagePack 解码器

先载入示例比较类型树和 JSON 预览,再检查自己的负载,或把一份标准 JSON 编码成 MessagePack。

处理都在本地浏览器完成。