2 个版本

0.0.2 2021年10月29日
0.0.1 2021年10月16日

2300算法

每月 43 次下载
用于 crcany-macro

MIT 许可证

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