diff --git a/lib/zlib/crc32.js b/lib/zlib/crc32.js new file mode 100644 index 0000000..6feb729 --- /dev/null +++ b/lib/zlib/crc32.js @@ -0,0 +1,34 @@ +'use strict'; + +// CRC table. +// Use ordinary array, since untyped makes no boost here +// +var crcTable = function makeTable() { + var c, table = []; + + for(var n =0; n < 256; n++){ + c = n; + for(var k =0; k < 8; k++){ + c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1)); + } + table[n] = c; + } + + return table; +} (); + + +function crc32(crc, buf, len, pos) { + var t = crcTable, + , end = pos + len + , crc = 0 ^ (-1); + + for (var i = pos; i < end; i++ ) { + crc = (crc >>> 8) ^ t[(crc ^ input[i]) & 0xFF]; + } + + return (crc ^ (-1)); // >>> 0; +} + + +module.exports = crc32; \ No newline at end of file