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); +}