2 个版本
0.1.1 | 2023年5月20日 |
---|---|
0.1.0 | 2023年5月20日 |
#10 in #reed-solomon
92KB
2K SLoC
rust-reed-solomon
为 Rust 实现的 reed-solomon
lib.rs
:
reed_solomon_cx
reed_solomon_cx 是 Reed Solomon 错误纠正的实现。
使用 rs_encode 生成校验长度数据,然后使用 rs_decode 可以恢复校验长度/2 的错误。
示例
// use rs_encode to generate 10 parity data
assert_eq!(
vec![196, 35, 39, 119, 235, 215, 231, 226, 93, 23],
reed_solomon_cx::rs_encode::rs_encode(
vec![32, 91, 11, 120, 209, 114, 220, 77, 67, 64,
236,17, 236, 17, 236, 17],
10
)
);
// now get origin data + parity data =
// [32, 91, 11, 120, 209, 114, 220, 77, 67, 64,
// 236, 17, 236, 17, 236, 17, 196, 35, 39, 119,
// 235, 215, 231, 226, 93, 23]
// it has 10 parity length, so i can fix 5 errors at most, so make 5 errors:
// [32, 91, 12, 120, 209, 114, 221, 77, 67, 64,
// 235, 17, 236, 17, 236, 17, 197, 35, 39, 119,
// 235, 215, 232, 226, 93, 23]
// use rs_decode to recover right data:
assert_eq!(
vec![32, 91, 11, 120, 209, 114, 220, 77, 67, 64,
236, 17, 236, 17, 236, 17, 196, 35, 39, 119,
235, 215, 231, 226, 93, 23],
reed_solomon_cx::rs_decode::rs_decode(
vec![32, 91, 12, 120, 209, 114, 221, 77, 67, 64,
235, 17, 236, 17, 236, 17, 197, 35, 39, 119,
235, 215, 232, 226, 93, 23],
10
)
);
依赖项
~2.2–3MB
~54K SLoC