# Protobuf 在线解码 - MessagePack、CBOR、BSON 二进制解析

> 免费在线解码二进制序列化数据：无 schema 解析 Protobuf 线格式，或粘贴 .proto 按字段名解码；支持 MessagePack、CBOR、BSON，树形 + JSON 输出，字节偏移联动高亮。

- 网址: https://qilingtools.com/zh/binary-decoder
- 分类: 开发工具 (https://qilingtools.com/zh/dev)
- 标签: [开发](https://qilingtools.com/zh/tags/dev), [数据格式](https://qilingtools.com/zh/tags/data), [编码解码](https://qilingtools.com/zh/tags/encode)
- 最后更新: 2026-10-26
- 价格: 免费，无需注册
- 隐私: 在浏览器本地处理，文件不上传服务器

抓包拿到一串 gRPC / Protobuf 字节、Redis 里存着 MessagePack、设备上报的是 CBOR、MongoDB 导出的是 BSON——这个工具可以直接把它们拆开看。粘贴十六进制（空格、0x、\x 格式都可以）或 Base64，也可以打开文件，工具会自动判断数据格式。Protobuf 在没有 schema 时按线格式逐字段解析：显示字段号与 wire type，varint 同时给出无符号、有符号 int64 和 zigzag（sint）解读，fixed32/64 同时给出整数与浮点数，长度分隔字段会依次尝试可打印字符串、嵌套消息、packed 重复字段，其余作为 bytes 显示，并列出其它可能的解读；输出与 protoc --decode_raw 相似的文本。如果有 .proto 文件，粘贴进来就能按字段名、枚举名解码，支持 message / enum / 嵌套类型 / repeated / packed / map / oneof。MessagePack 支持全部类型和 timestamp 扩展；CBOR 遵循 RFC 8949，支持 tag（日期、大整数、UUID、内嵌 CBOR 等）、半精度浮点和不定长字符串 / 数组 / map，并输出诊断记法；BSON 支持 ObjectId、日期、Decimal128、二进制等类型，以 Extended JSON 输出。结果以树形结构和 JSON 两种方式展示：鼠标移到节点上，右侧十六进制视图会高亮对应字节；点击某个字节可定位到所属节点；解码失败时标出出错位置。还可以反向把 JSON 编码成 MessagePack、CBOR 或 BSON。全部在浏览器本地完成。

## 使用步骤

1. 粘贴十六进制或 Base64，或打开二进制文件
2. 选择数据格式（默认自动识别）；Protobuf 可选填 .proto 定义并选择根消息
3. 在树形视图与十六进制视图之间对照查看，复制 JSON 结果

## 功能特点

- Protobuf 无 schema 解码：varint / zigzag / fixed / 嵌套 / packed 自动推断
- 粘贴 .proto 按字段名解码（enum、map、oneof、嵌套类型）
- MessagePack 全类型，含 timestamp 扩展
- CBOR（RFC 8949）：tag、半精度浮点、不定长、诊断记法
- BSON：ObjectId、日期、Decimal128，Extended JSON 输出
- 树形视图与十六进制字节偏移双向联动
- 自动识别格式与输入编码（Hex / Base64 / 文件）
- JSON 编码为 MessagePack / CBOR / BSON

## 常见问题

### 没有 .proto 文件能解析 Protobuf 吗？

可以。Protobuf 的线格式本身带有字段号和 wire type，工具能完整拆出结构，但不知道字段名和确切类型：varint 可能是 int、bool、enum 或 zigzag 编码的 sint，长度分隔字段可能是字符串、bytes、嵌套消息或 packed 数组。工具会按最可能的方式显示，并在灰色说明里列出其它解读。有 .proto 时粘贴进来即可得到准确结果。

### gRPC 抓包数据要怎么处理？

gRPC 每条消息前有 5 字节的帧头：1 字节压缩标志 + 4 字节大端长度。请去掉这 5 个字节再粘贴；如果压缩标志为 1，数据还经过 gzip 压缩，需要先解压。gRPC-Web 的 Base64 文本格式同理，Base64 解码后去掉帧头即可。

### 为什么同一段数据会被识别成不同格式？

这几种格式都没有魔数，很短的数据往往同时是合法的 Protobuf、MessagePack 和 CBOR。自动识别会优先选完整解码、结构更合理的那种（BSON 有长度头，最容易确定）。识别不对时，在“数据格式”里手动选择即可。

### 大整数和二进制数据在 JSON 里怎么表示？

超过 JavaScript 安全整数范围（2^53）的整数以字符串输出，避免精度丢失；bytes / 二进制数据输出为 Base64 字符串（与 Protobuf 的 JSON 映射一致）。BSON 使用 MongoDB Extended JSON，例如 {"$oid": "…"}、{"$date": …}、{"$numberLong": "…"}，这样再编码回 BSON 时类型不会丢失。

## 相关工具

- [JSON 格式化](https://qilingtools.com/zh/json): 免费在线 JSON 格式化：一键美化、压缩，实时语法校验并定位到出错行列，支持树形视图折叠、键名排序、转义与去转义、Unicode 转中文、复制下载，数据不上传。
- [Base64 编解码](https://qilingtools.com/zh/base64): 免费在线 Base64 编码解码工具：支持中文 UTF-8、URL 安全变体，文本与 Base64 互转，实时转换，本地处理不上传。
- [URL 编解码](https://qilingtools.com/zh/url-encode): 免费在线 URL 编码解码工具：encodeURIComponent 与 encodeURI 两种模式，处理中文、空格与特殊符号，本地实时转换不上传。
- [JWT 解析](https://qilingtools.com/zh/jwt): 免费在线 JWT 解析工具：解码 JWT 的 Header 与 Payload，展示过期时间、签发时间等，本地解析不上传，保护令牌安全。
- [时间戳转换](https://qilingtools.com/zh/timestamp): 免费在线 Unix 时间戳转换工具：时间戳与日期互转，自动识别秒/毫秒，显示本地时间、UTC、ISO 8601 和相对时间，实时更新。
- [哈希计算](https://qilingtools.com/zh/hash): 免费在线哈希/摘要计算工具：对文本或文件计算 SHA-1、SHA-256、SHA-384、SHA-512，使用浏览器加密接口本地完成，文件不上传。
- [UUID 生成](https://qilingtools.com/zh/uuid): 免费在线 UUID 生成器：使用加密安全随机数批量生成符合 RFC 4122 的 UUID v4，可大写、去连字符、加花括号，一键复制。
- [进制转换](https://qilingtools.com/zh/base-convert): 免费在线进制转换工具：二进制、八进制、十进制、十六进制及任意 2–36 进制互转，支持大整数（BigInt），本地实时计算。
