pako/lib/zlib/crc32.js

41 wiersze
788 B
JavaScript
Czysty Zwykły widok Historia

2014-02-15 02:20:32 +00:00
'use strict';
2014-02-21 07:42:42 +00:00
// Note: we can't get significant speed boost here.
// So write code to minimize size - no pregenerated tables
// and array tools dependencies.
2014-02-15 02:20:32 +00:00
// Use ordinary array, since untyped makes no boost here
function makeTable() {
2014-02-15 02:20:32 +00:00
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));
}
2014-02-20 18:31:37 +00:00
table[n] = c;
2014-02-15 02:20:32 +00:00
}
return table;
}
2014-02-21 07:42:42 +00:00
// Create table on load. Just 255 signed longs. Not a problem.
var crcTable = makeTable();
2014-02-15 02:20:32 +00:00
function crc32(crc, buf, len, pos) {
var t = crcTable
, end = pos + len;
2014-02-20 18:14:09 +00:00
crc = crc ^ (-1);
2014-02-15 02:20:32 +00:00
for (var i = pos; i < end; i++ ) {
crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
2014-02-15 02:20:32 +00:00
}
return (crc ^ (-1)); // >>> 0;
}
module.exports = crc32;