Reed-Solomon BCH
Reed-Solomon BCH encoder and decoder implemented in Rust.
This is a port of python implementation from Wikiversity
Setup
[dependencies]
reed-solomon = "0.1"
extern crate reed_solomon
Example
extern crate reed_solomon;
use reed_solomon::Encoder;
use reed_solomon::Decoder;
fn main() {
let data = "Hello World!".as_bytes();
let ecc_len = 8;
let enc = Encoder::new(ecc_len);
let dec = Decoder::new(ecc_len);
let encoded = enc.encode(&data[..]);
let mut corrupted = encoded.clone();
for i in 0..4 {
corrupted[i] = 0xEE;
}
let known_erasures = [0];
let recovered = dec.decode(corrupted, 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);
}