Bencode 是 BitTorrent (BT 种子) 协议中使用的一种极为成熟的数据序列化和编码格式。本项目旨在为 MoonBit 语言生态提供一个高性能、严格遵循规范的 Bencode 原生编解码器。它的实现不仅填补了 MoonBit 在该特定二进制文本序列化领域的生态空白,还为未来使用 MoonBit 开发 Web3、P2P 协议和高性能网络工具奠定了坚实的基础
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
MoonBencode (基于 MoonBit 的 Bencode 库)
MoonBencode 是一个高性能且成熟的 Bencode 序列化与反序列化库,完全使用 MoonBit 编写。Bencode 是 BitTorrent 点对点文件共享协议所使用的数据编码格式。
特性
i...e,<len>:<string>,l...e和d...e并转换为 MoonBit AST 抽象语法树。Bytes,保证字节级别的保真度。安装与依赖配置
1. 添加依赖到项目中
在你的项目根目录下,运行命令行工具添加依赖:
或者直接编辑你项目的
moon.mod文件,在import部分添加:2. 导入包到模块中
在你想使用该库的包对应的
moon.pkg(例如moon.pkg.json或moon.pkg)中,添加依赖声明:快速使用
配置完成后,在
.mbt源码文件中,即可通过包别名前缀@bencode快速调用本库的方法:高级功能
1. JSON 互操作性
支持与 MoonBit 标准库的
Json类型进行互转。其中from_json会自动对字典的键进行排序以满足规范:2. 路径检索
无需深层嵌套匹配,使用路径数组即可快速查找子元素:
3. 种子 Info Hash 计算
对于 BitTorrent 开发,计算
info字典的 SHA-1 散列是核心。本库已完美集成纯 MoonBit 的 SHA-1 及 hash 计算器:数据类型
本库使用 MoonBit Enum 表示标准 Bencode 类型:
BInt(Int64): 整数类型。BStr(Bytes): 字节串(未强制使用 UTF-8)。BList(Array[BValue]): 列表类型。BDict(Array[(Bytes, BValue)]): 字典类型(键已按字典序排好)。命令行常用操作
本库提供以下标准命令供开发者使用:
moon check --deny-warnmoon buildmoon test --deny-warnmoon fmt --check开源协议
Apache-2.0