#codec #ecc #bch #no-std

no-std reed-solomon-32

支持no_std环境的Reed-Solomon BCH编码器和解码器

4个稳定版本

2.0.2 2021年12月6日
2.0.1 2021年11月24日
1.0.0 2021年11月3日

#1875 in 编码


用于libhumancode

MIT许可证

58KB
1K SLoC

Reed-Solomon BCH

Crates.io Documentation

使用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);
}

无运行时依赖