1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- '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;
- };
|