pacenotes_installer\zip/
crc32.rs1const TABLE: [u32; 256] = table();
5
6const fn table() -> [u32; 256] {
7 let mut table = [0u32; 256];
8 let mut byte = 0;
9 while byte < 256 {
10 let mut crc = byte as u32;
11 let mut bit = 0;
12 while bit < 8 {
13 crc = if crc & 1 == 1 {
14 (crc >> 1) ^ 0xEDB8_8320
15 } else {
16 crc >> 1
17 };
18 bit += 1;
19 }
20 table[byte] = crc;
21 byte += 1;
22 }
23 table
24}
25
26pub fn crc32(data: &[u8]) -> u32 {
28 let mut crc = 0xFFFF_FFFFu32;
29 for &byte in data {
30 crc = (crc >> 8) ^ TABLE[((crc ^ byte as u32) & 0xFF) as usize];
31 }
32 !crc
33}