跳到主内容
UniKit

Bencode 解码

解析 BitTorrent bencode(BEP 3)数据:字符串、整数、列表与字典,校验字典键的字节序,输出 JSON 与带字节偏移的可折叠树;语法错误会明确报错。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

解析结果

输入 bencode 数据后自动解析

选中节点

输入 bencode 数据后自动解析

JSON 视图

非 UTF-8 的字节串写作 h'…',超出安全范围的整数以字符串表示。

这个工具能做什么

  • 检查种子文件(.torrent)的 metainfo 结构:确认 info 字典里的 name、piece length、announce 等字段,排查「种子能打开但下载不动」。
  • 核对 bencode 字典的键序是否严格升序——BEP 3 要求按键的原始字节序排列,顺序不对的种子在规范客户端里会被直接拒绝。
  • 按字节偏移定位问题字段:树里每一行都标了起始偏移和字节长度,对照 hex 编辑器能直接跳到出错的位置。
  • 把 bencode 转成 JSON 再看,方便用脚本或 jq 继续处理里面的数据。

示例

输入

d3:cow3:moo4:spam4:eggse

输出

{
  "cow": "moo",
  "spam": "eggs"
}

这是 BEP 3 里的经典示例,共 24 字节、3 个节点(根字典 + 两个字符串)。输入模式是「文本」,直接用 UTF-8 转字节;如果数据里含非 UTF-8 字节,改用「十六进制」模式粘贴。

常见问题

为什么我的种子解析报错?

最常见的原因是字典的键没有按字节序升序排列,或者文件被截断(比如只复制了一半)。BEP 3 把键序当作硬性要求,工具会直接报「不是合法的 bencode 数据」而不是宽容处理;如果数据是从别处复制来的,先用十六进制模式确认字节完整。

非 UTF-8 的字节串会怎么显示?

bencode 是字节协议,允许任意字节。工具会尝试按 UTF-8 解码,成功就显示原文,失败则以 `h'…'` 形式给出十六进制,JSON 视图里同样如此,不会因为编码问题拒绝解析。

超出 JavaScript 安全范围的整数怎么办?

整数在树里按十进制字符串展示,不做任何取整;转 JSON 时只有落在 ±2^53−1 之内的整数才会变成 JSON number,超出的保持字符串,避免静默丢精度。

它和 CBOR 解码有什么区别?

两者都是二进制/字节序列化格式,但规则完全不同:bencode 只支持字符串、整数、列表、字典四种类型,且字典键必须有序;CBOR 有 8 种主要类型、不定长容器、浮点与标签(tag)。如果你拿到的是物联网设备或 COSE 数据,用 CBOR 查看工具;种子文件用这个。

解析会联网吗?

不会。整个解码器在浏览器本地运行,不发任何网络请求,粘贴的种子数据也不会离开页面。

关键词:bencodebittorrenttorrentbep 3decodemetainfoBencode 解码种子文件磁力链接字典键排序序列化解析

同类工具