Module crcxx::crc8

source ·
Expand description

CRC-8

Processing using no lookup table, single byte per step

use crcxx::crc8::{*, catalog::CRC_8_CDMA2000};

const CRC: Crc<NoLookupTable> = Crc::<NoLookupTable>::new(&CRC_8_CDMA2000);

fn main() {
    // singlepart data.
    let crc = CRC.compute(b"123456789");
    assert_eq!(crc, 0xDA);

    // Multipart data.
    let mut multipart = CRC.compute_multipart();
    multipart.update(b"1234");
    multipart.update(b"5678");
    multipart.update(b"9");

    let crc = multipart.value();
    assert_eq!(crc, 0xDA);
}

Processing using a lookup table with 32 entries, single byte per step

use crcxx::crc8::{*, catalog::CRC_8_CDMA2000};

const CRC: Crc<LookupTable32> = Crc::<LookupTable32>::new(&CRC_8_CDMA2000);

fn main() {
    // singlepart data.
    let crc = CRC.compute(b"123456789");
    assert_eq!(crc, 0xDA);

    // Multipart data.
    let mut multipart = CRC.compute_multipart();
    multipart.update(b"1234");
    multipart.update(b"5678");
    multipart.update(b"9");

    let crc = multipart.value();
    assert_eq!(crc, 0xDA);
}

Processing using a lookup table with 256 entries, single byte per step

use crcxx::crc8::{*, catalog::CRC_8_CDMA2000};

const CRC: Crc<LookupTable256> = Crc::<LookupTable256>::new(&CRC_8_CDMA2000);

fn main() {
    // singlepart data.
    let crc = CRC.compute(b"123456789");
    assert_eq!(crc, 0xDA);

    // Multipart data.
    let mut multipart = CRC.compute_multipart();
    multipart.update(b"1234");
    multipart.update(b"5678");
    multipart.update(b"9");

    let crc = multipart.value();
    assert_eq!(crc, 0xDA);
}

Processing using a lookup table with 256 x SLICES entries, multiple bytes per step

use crcxx::crc8::{*, catalog::CRC_8_CDMA2000};

const SLICES: usize = 16;
const CRC: Crc<LookupTable256xN<SLICES>> =
    Crc::<LookupTable256xN<SLICES>>::new(&CRC_8_CDMA2000);

fn main() {
    // singlepart data.
    let crc = CRC.compute(b"123456789");
    assert_eq!(crc, 0xDA);

    // Multipart data.
    let mut multipart = CRC.compute_multipart();
    multipart.update(b"1234");
    multipart.update(b"5678");
    multipart.update(b"9");

    let crc = multipart.value();
    assert_eq!(crc, 0xDA);
}

Modules

Structs

Type Definitions