mycrc

Crates.iomycrc
lib.rsmycrc
version0.3.1
sourcesrc
created_at2021-08-08 08:14:16.560569
updated_at2021-08-11 02:15:22.228266
descriptionCreate your own cyclic redundancy check (CRC).
homepage
repositoryhttps://github.com/kurotakazuki/mycrc
max_upload_size
id433052
size34,674
Kazuki Kurota (kurotakazuki)

documentation

README

My CRC

Crate API

Create your own cyclic redundancy check (CRC).

Getting Started

  1. Create your own CRC using [CRC::new].
  2. Create checksum from message.
    • [CRC::checksum]
    • [CRC::initialize] -> [CRC::calc_bytes] -> ... -> [CRC::calc_bytes] -> [CRC::finalize]
  3. Use [CRC::is_error_free_bytes] to check if bytes [message + checksum] are error-free.

Example

use mycrc::{CRC, Endian};

// message
const CHECK_BYTES: &[u8] = b"123456789";

// Create your own CRC.
let mut crc32c = CRC::<u32>::new(
    Endian::Little, // endian
    0x1edc6f41, // poly
    0xffffffff, // init
    true, // refin
    true, // refout
    0xffffffff, // xorout
);

// Checksum
assert_eq!(crc32c.checksum(CHECK_BYTES), 0xe3069283);
// Is error-free?
let checksum = crc32c.checksum_to_endian_bytes(CHECK_BYTES);
let bytes = [CHECK_BYTES, &checksum].concat();
assert!(crc32c.is_error_free_bytes(&bytes));
Commit count: 13

cargo fmt