4个版本
3.0.0-alpha.11 | 2023年9月18日 |
---|---|
3.0.0-alpha.10 | 2023年9月16日 |
3.0.0-alpha.8 | 2023年9月15日 |
#1781 in 编码
63KB
1.5K SLoC
Bencode
此库允许创建和解析bencode编码。
Bencode是BitTorrent技术中使用的二进制编码,从元信息文件到DHT消息。Bencode类型包括整数、字节数组、列表和字典,其中后两种可以包含任何bencode类型(它们可以递归构建)。
lib.rs
:
用于解析和转换bencoded数据的库。
示例
解码bencoded数据
extern crate bencode;
use std::default::Default;
use bencode::{BencodeRef, BRefAccess, BDecodeOpt};
fn main() {
let data = b"d12:lucky_numberi7ee"; // cspell:disable-line
let bencode = BencodeRef::decode(data, BDecodeOpt::default()).unwrap();
assert_eq!(7, bencode.dict().unwrap().lookup("lucky_number".as_bytes())
.unwrap().int().unwrap());
}
编码bencoded数据
#[macro_use]
extern crate bencode;
fn main() {
let message = (ben_map!{
"lucky_number" => ben_int!(7),
"lucky_string" => ben_bytes!("7")
}).encode();
let data = b"d12:lucky_numberi7e12:lucky_string1:7e"; // cspell:disable-line
assert_eq!(&data[..], &message[..]);
}
依赖
~2.5–3.5MB
~74K SLoC