Bencode 解码
解析 BitTorrent bencode(BEP 3)数据:字符串、整数、列表与字典,校验字典键的字节序,输出 JSON 与带字节偏移的可折叠树;语法错误会明确报错。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
解析结果
输入 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 解码种子文件磁力链接字典键排序序列化解析