From 42e25087663769816d311f6e1ab2d01283a40b66 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 9 Oct 2023 19:06:51 -0400 Subject: [PATCH] Add crc32() --- src/fart/crc32.d | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/fart/crc32.d diff --git a/src/fart/crc32.d b/src/fart/crc32.d new file mode 100644 index 0000000..faf5456 --- /dev/null +++ b/src/fart/crc32.d @@ -0,0 +1,18 @@ +module fart.crc32; + +import std.digest.crc; + +/** + * Calculate the CRC32 across the given chunk(s) of data. + */ +public uint crc32(Args...)(Args data) +{ + CRC32 crc32; + crc32.start(); + static foreach (arg; data) + { + crc32.put(cast(const(ubyte)[])arg); + } + auto crc = crc32.finish(); + return crc[0] | (crc[1] << 8) | (crc[2] << 16) | (crc[3] << 24); +}