3个版本
0.1.2 | 2022年9月1日 |
---|---|
0.1.1 | 2022年9月1日 |
0.1.0 | 2022年8月7日 |
#1158 in 编码
每月192次下载
15KB
234 行
简单SLIP
对Rust的RFC 1055 SLIP编码的一个简单、轻量级的实现!
什么是SLIP编码?
SLIP(串行行互联网协议)编码是一种非常简单的方式来打包数据,以便将其传输到另一个接收器。我强烈建议您阅读有关该主题的维基百科文章以获取更多信息!
示例
SLIP用于编码要发送的数据和解码要读取的数据。
编码
注意:每个数据包将以一个开始和一个结束的END
(0xC0)字节。
use simple_slip::encode;
let input: Vec<u8> = vec![0x01, 0xDB, 0x49, 0xC0, 0x15];
let expected: Vec<u8> = vec![0xC0, 0x01, 0xDB, 0xDD, 0x49, 0xDB, 0xDC, 0x15, 0xC0];
let result: Vec<u8> = encode(&input).unwrap();
assert_eq!(result, expected);
解码
注意:每个数据包将从第二个出现的END
(0xC0)字节开始解码。
以下数据数组只会解码0x01
,因为它是第二个END
(0xC0)字节之后的唯一字节
[0xA1, 0xA2, 0xA3, 0xC0, 0xC0, 0x01] --decode--> [0x01]
use simple_slip::decode;
let input: Vec<u8> = vec![0xA1, 0xA2, 0xA3, 0xC0, 0xC0, 0x01, 0xDB, 0xDD, 0x49, 0xDB, 0xDC, 0x15, 0xC0];
let expected: Vec<u8> = vec![0x01, 0xDB, 0x49, 0xC0, 0x15];
let result: Vec<u8> = decode(&input).unwrap();
assert_eq!(result, expected);