2 个版本
0.0.2 | 2021年10月29日 |
---|---|
0.0.1 | 2021年10月16日 |
2300 在 算法 中
每月 43 次下载
用于 crcany-macro
69KB
2K SLoC
crcany-rs
将 Mark Adler 的 crcany 包移植到 Rust。
给定描述它的参数集,计算任何CRC。更多信息,请参阅 crcany、Gary Cook 的 CRC 参数目录(这些实现的来源)或 Ross Williams 的原始 教程,它首次指定了参数。
库包括两种计算CRC的方法:要么直接评估参数模型,要么使用过程宏生成处理特定CRC的代码。在任何情况下,CRC都可以直接计算,以位操作、字节或字的形式计算,或使用预计算的表。
示例
过程宏
use crcany::crc::v2::Crc;
use crcany::impl_crc;
impl_crc!("CRC-3/GSM");
let mut crc = crc3gsm::bitwise::Crc3Gsm::new();
crc.add_bytes(b"123456789");
assert_eq!(4, crc.to_inner());
评估模型
use crcany::crc::{Crc, FromSpec};
use crcany::model::BitwiseModel;
let spec = "w=3 p=3 r=t c=2 res=3 n=POOH".parse().unwrap();
let bitwise = BitwiseModel::from_spec(spec);
let init = bitwise.crc(0, [].iter().cloned());
let crc = bitwise.crc(init, b"123456789".iter().cloned());
assert_eq!(2, crc);
依赖项
~2.5MB
~57K SLoC