From 7c640bfeaf2a0fbc8c3550b4c19790a800a7f6a2 Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 26 Aug 2026 23:58:16 +1200 Subject: feat: Added a bunch of stuff Added derive macro for byte encode Added start for PNG reading Added BMP writing --- src/crc.rs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/crc.rs (limited to 'src/crc.rs') diff --git a/src/crc.rs b/src/crc.rs new file mode 100644 index 0000000..f24da02 --- /dev/null +++ b/src/crc.rs @@ -0,0 +1,37 @@ +const CRC_TABLE: [u32; 256] = make_crc_table(); + +const fn make_crc_table() -> [u32; 256] +{ + let mut table = [0u32; 256]; + let mut c: u32; + let mut k: i32; + let mut n: u32 = 0; + while n < 256 + { + c = n; + k = 0; + while k < 8 + { + if c & 1 == 1 + { + c = 0xedb88320 ^ (c >> 1); + } + else + { + c = c >> 1; + } + k += 1; + } + table[n as usize] = c; + n += 1; + } + table +} + +pub fn update_crc(curr_crc: &mut u32, buff: &[u8]) -> () +{ + for x in buff + { + *curr_crc = CRC_TABLE[((*curr_crc as u8 ^ x) & 0xff) as usize] ^ (*curr_crc >> 8); + } +} -- cgit v1.3.1