crc/
util.rs

1pub fn make_table_crc16(poly: u16) -> [u16; 256] {
2    let mut table = [0u16; 256];
3    for i in 0..256 {
4        let mut value = i as u16;
5        for _ in 0..8 {
6            value = if (value & 1) == 1 {
7                (value >> 1) ^ poly
8            } else {
9                value >> 1
10            }
11        }
12        table[i] = value;
13    }
14    table
15}
16
17pub fn make_table_crc32(poly: u32) -> [u32; 256] {
18    let mut table = [0u32; 256];
19    for i in 0..256 {
20        let mut value = i as u32;
21        for _ in 0..8 {
22            value = if (value & 1) == 1 {
23                (value >> 1) ^ poly
24            } else {
25                value >> 1
26            }
27        }
28        table[i] = value;
29    }
30    table
31}
32
33pub fn make_table_crc64(poly: u64) -> [u64; 256] {
34    let mut table = [0u64; 256];
35    for i in 0..256 {
36        let mut value = i as u64;
37        for _ in 0..8 {
38            value = if (value & 1) == 1 {
39                (value >> 1) ^ poly
40            } else {
41                value >> 1
42            }
43        }
44        table[i] = value;
45    }
46    table
47}