4个稳定版本
2.0.2 | 2021年12月6日 |
---|---|
2.0.1 | 2021年11月24日 |
1.0.0 | 2021年11月3日 |
#1875 in 编码
58KB
1K SLoC
Reed-Solomon BCH
使用Rust实现的Reed-Solomon BCH编码器和解码器。
这是从维基大学的python实现移植过来的
这是https://github.com/mersinvald/reed-solomon-rs的分支,主要变化是它在GF(2^5)上操作而不是在GF(2^8)上,并且公开API已修改。
设置
[dependencies]
reed-solomon-32 = "^2.0.0"
示例
use reed_solomon_32::encode;
use reed_solomon_32::correct;
fn main() {
let data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
// Length of error correction code
let ecc_len = 8;
// Encode data
let encoded = encode(&data, ecc_len).unwrap();
// Simulate some transmission errors
let mut corrupted = *encoded;
for i in 0..4 {
corrupted[i] = 0x0;
}
// Try to recover data
let known_erasures = [0];
let recovered = correct(&mut corrupted, ecc_len, Some(&known_erasures)).unwrap();
let orig_str = std::str::from_utf8(&data).unwrap();
let recv_str = std::str::from_utf8(recovered.data()).unwrap();
println!("message: {:?}", orig_str);
println!("original data: {:?}", data);
println!("error correction code: {:?}", encoded.ecc());
println!("corrupted: {:?}", corrupted);
println!("repaired: {:?}", recv_str);
}