You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
855 B
44 lines
855 B
'use strict'; |
|
|
|
var crcTable = []; |
|
|
|
(function() { |
|
for (var i = 0; i < 256; i++) { |
|
var currentCrc = i; |
|
for (var j = 0; j < 8; j++) { |
|
if (currentCrc & 1) { |
|
currentCrc = 0xedb88320 ^ (currentCrc >>> 1); |
|
} |
|
else { |
|
currentCrc = currentCrc >>> 1; |
|
} |
|
} |
|
crcTable[i] = currentCrc; |
|
} |
|
}()); |
|
|
|
var CrcCalculator = module.exports = function() { |
|
this._crc = -1; |
|
}; |
|
|
|
CrcCalculator.prototype.write = function(data) { |
|
|
|
for (var i = 0; i < data.length; i++) { |
|
this._crc = crcTable[(this._crc ^ data[i]) & 0xff] ^ (this._crc >>> 8); |
|
} |
|
return true; |
|
}; |
|
|
|
CrcCalculator.prototype.crc32 = function() { |
|
return this._crc ^ -1; |
|
}; |
|
|
|
|
|
CrcCalculator.crc32 = function(buf) { |
|
|
|
var crc = -1; |
|
for (var i = 0; i < buf.length; i++) { |
|
crc = crcTable[(crc ^ buf[i]) & 0xff] ^ (crc >>> 8); |
|
} |
|
return crc ^ -1; |
|
};
|
|
|