5次发布

0.0.4 2023年12月3日
0.0.3 2023年11月16日
0.0.2 2023年11月16日
0.0.1 2023年11月16日
0.0.0 2023年11月16日

#1026算法

22 每月下载量
用于 stegano

MIT 许可证

41KB
630

CRC32

从灰烬中复活crc32 库。

使用方法

crc32-v2 添加到您的 Cargo.toml 文件

[dependencies]
crc32-v2 = "0.0.4"

或运行

cargo add crc32-v2

示例

use crc32_v2::crc32;
use crc32_v2::byfour::crc32_little;

const CRC32_INIT: u32 = 0; // Initial CRC value, you can customize it

fn main() {
    // Your data to calculate CRC for
    let data = b"Hello, world!";

    // Calculate CRC
    let result_crc = crc32(CRC32_INIT, data);

    // Print the result
    println!("CRC-32: {:x}", result_crc);

    // Calculate CRC using the little-endian method
    let result_crc_little = crc32_little(CRC32_INIT, data);

    // Print the result
    println!("CRC-32 (Little Endian): {:x}", result_crc_little);
}

// Output

// CRC-32: ebe6c6e6
// CRC-32 (Little Endian): a29eb9bf

lib.rs:

CRC32 V2

此crate提供了一个简单的CRC32实现。

使用方法

要使用此crate,请将以下内容添加到您的 Cargo.toml 文件

[dependencies]
crc32_v2 = "0.0.4"

然后,您可以使用 crc32crc32_little 函数计算字节数组的CRC32校验和。

示例

use crc32_v2::byfour::crc32_little;
use crc32_v2::crc32;

let crc = crc32(0, &[0u8, 1u8, 2u8, 3u8]);
assert_eq!(crc, 0x8BB98613);
let crc_little = crc32_little(crc, &[0u8, 1u8, 2u8, 3u8]);
assert_eq!(crc, 0x8BB98613);

实现细节

CRC32算法使用标准多项式和查找表进行优化。

crc32 函数接受两个参数

  • start_crc:初始CRC32值(通常为0)
  • buf:包含输入字节的字节切片

它返回一个 u32,即输入缓冲区的CRC32校验和。

无运行时依赖项