📦

Protobuf 解码器

在线 Protocol Buffers 解码工具,解码二进制 Protobuf 数据

👁️ - 次使用

使用说明:粘贴 Base64 编码的 Protobuf 数据,解码显示每个字段的编号、类型和值。

支持:varint(含 signed)、64-bit、length-delimited(string/bytes)、32-bit。

适用场景:gRPC 调试、Protobuf 数据逆向分析、网络包解码。

注意:此为简单解码器,基于 wire type 解析。如需 schema-aware 解码请使用 protoc 等工具。

📖 描述:在线 Protocol Buffers 解码工具,解码二进制 Protobuf 数据

📂 分类:编码解码

🔒 隐私:所有数据仅在浏览器本地处理,不上传到任何服务器。

使用场景

做微服务或者 gRPC 开发的工程师应该最熟悉了。Protobuf(Protocol Buffers)是 Google 出品的高效序列化协议,广泛应用于服务间通信。但问题来了:Protobuf 编码后的数据是二进制的,你没法直接打开看里面到底是什么。拿到一串 protobuf 编码后的 hex 数据,想知道里面到底包含了哪些字段、值的类型是什么,用这个工具解码一下就能看懂了。

调试和排查问题的时候更是必备。你的服务 A 调用服务 B 的 gRPC 接口,返回了异常数据或者超时。你把网络抓包抓到的 protobuf 二进制数据贴进来解码,看看字段数值是否合理、有没有缺少必填字段、时间戳是否正确。很多时候问题就出在客户端和服务端的 .proto 文件不一致,导致字段编号对不上。

还有一种情况是做数据迁移或者数据兼容性分析。不同版本的 .proto 文件可能字段编号或类型发生了变化,你需要确认旧版本的序列化数据在新版本下是否能正常解析。把旧数据放进来解码,对照新 .proto 定义看看有没有不兼容的地方。如果字段类型变了或者必需的字段被删了,解码就会出问题。

常见问题

问:解码 Protobuf 需要 .proto 文件吗? 答:不一定。没有 .proto 文件时,工具可以根据二进制数据的 wire type 推测出字段编号和类型,但字段名会显示为 “field_1”、“field_2” 这样的占位名。要得到完整的字段名称和类型信息,需要提供 .proto 定义文件。建议两边都准备着。

问:支持哪些 Protobuf 数据类型? 答:支持所有常见的 Protobuf 标量类型,包括 int32、int64、uint32、uint64、sint32、sint64、fixed32、fixed64、float、double、bool、string、bytes。也支持枚举(enum)和嵌套消息(message)。但 repeated 字段和 map 字段的解析可能需要 .proto 文件的辅助。

问:输入数据的格式是什么? 答:工具通常接受 Hex 编码的二进制数据(如 0A0B...)或者 Base64 编码的数据。你也可以通过文件上传直接导入 .bin 格式的 protobuf 二进制文件。确保你输入的原始数据是 Protobuf 序列化后的 payload,不要带上 gRPC 的帧头信息。

相关工具推荐

📢 AdSense 广告位 — 审核通过后自动展示

🔥 热门工具

加载中...