20 个版本
使用旧的 Rust 2015
0.9.0 | 2024 年 2 月 2 日 |
---|---|
0.8.0 | 2023 年 8 月 17 日 |
0.7.1 | 2022 年 5 月 13 日 |
0.7.0 | 2020 年 8 月 6 日 |
0.1.1 | 2016 年 7 月 30 日 |
#443 在 解析器实现
8,854 每月下载量
22KB
477 行
tlv-parser
BER-TLV 解析库
库支持从 &[u8]
解析并发射 Vec<u8>
。
如果可以使用 core::alloc
,这是一个 no_std
包。
有关使用方法,请参阅 decode-tlv/src/main.rs
。
$ echo "7003820151" | cargo run
Running `target/debug/decode-tlv`
tag=70
tag=82, len=1, data=51 Q
lib.rs
:
用于解析和发射 BER-TLV 数据的库。
#示例
解析 TLV
use tlv_parser::tlv::{Tlv, Value};
let input: Vec<u8> = vec![0x21, 0x05, 0x22, 0x03, 0x03, 0x01, 0xaa];
let tlv = Tlv::from_vec( &input ).unwrap();
if let Some(&Value::Val(ref val)) = tlv.find_val("21 / 22 / 03") {
assert_eq!(*val, vec![0xaa]);
}
发射构造的 TLV 封装的基本 TLV
use tlv_parser::tlv::*;
let primitive_tlv = Tlv::new(0x01, Value::Nothing).unwrap();
let constructed_tlv = Tlv::new(0x21, Value::TlvList(vec![primitive_tlv])).unwrap();
assert_eq!(constructed_tlv.to_vec(), vec![0x21, 0x02, 0x01, 0x00]);
依赖项
~1.5MB
~38K SLoC