#reed-solomon #error #encode #parity #data #vec #generate

reed-solomon-cx

陈晓实现的 Reed Solomon 算法

2 个版本

0.1.1 2023年5月20日
0.1.0 2023年5月20日

#10 in #reed-solomon

MIT/Apache

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