代码拉取完成,页面将自动刷新
PpeAddress
type and decode/encode
function.
use std::str::FromStr;
use std::net::{Ipv4Addr, Ipv6Addr};
use jppe::{ByteDecode, ByteEncode};
use jppe::fields::{MacAddress, PpeAddress};
use jppe_derive::{ByteDecode, ByteEncode};
#[derive(Debug, PartialEq, Eq, ByteDecode, ByteEncode)]
pub struct PpeAddrExample {
#[jppe(length=4)]
pub ipv4: PpeAddress,
#[jppe(length=16)]
pub ipv6: PpeAddress,
#[jppe(length=6)]
pub mac: PpeAddress,
pub length: u8,
#[jppe(length="length")]
pub addr: PpeAddress,
}
#[test]
fn test_ppe_address_example() {
let input = b"\xc0\xa8\x39\xa0\
\xfe\x80\x00\x00\x00\x00\x00\x00\x41\x59\xf7\xb2\xb9\xed\x96\x89\
\xff\xff\xff\xff\xff\xff\
\x02\
\x00\x01";
let (input_remain, value) = PpeAddrExample::decode(input, None, None).unwrap();
assert_eq!(value, PpeAddrExample {
ipv4: PpeAddress::V4(Ipv4Addr::from_str("192.168.57.160").unwrap()),
ipv6: PpeAddress::V6(Ipv6Addr::from_str("fe80::4159:f7b2:b9ed:9689").unwrap()),
mac: PpeAddress::Mac(MacAddress::from_str("ff:ff:ff:ff:ff:ff").unwrap()),
length: 2,
addr: PpeAddress::Usize(1),
});
assert_eq!(input_remain.is_empty(), true);
let mut buf = Vec::new();
value.encode(&mut buf, None, None);
assert_eq!(buf, input);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。