Reed-Solomon BCH

Build Status Crates.io

Reed-Solomon BCH encoder and decoder implemented in Rust. This is a port of python implementation from Wikiversity

Setup

toml [dependencies] reed-solomon = "0.1"

rust extern crate reed_solomon

Example

```rust extern crate reed_solomon;

use reedsolomon::Encoder; use reedsolomon::Decoder;

fn main() { let data = "Hello World!".as_bytes();

// Length of error correction code
let ecc_len = 8;

// Create encoder and decoder with 
let enc = Encoder::new(ecc_len);
let dec = Decoder::new(ecc_len);

// Encode data
let encoded = enc.encode(&data[..]);

// Simulate some transmission errors
let mut corrupted = encoded.clone();
for i in 0..4 {
    corrupted[i] = 0xEE;
}

// Try to recover data
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);

} ```