@technobuddha/library
Version:
A large library of useful functions
31 lines (30 loc) • 925 B
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.crc32 = void 0;
var isEmpty_1 = __importDefault(require("lodash/isEmpty"));
var crcTable = [];
/**
* Compute the CRC32 checksum for a string
*
* @param input The string
* @return the CRC32 checksum
*/
function crc32(input) {
if (isEmpty_1.default(crcTable)) {
for (var n = 0; n < 256; ++n) {
var c = n;
for (var k = 0; k < 8; ++k)
c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
crcTable[n] = c;
}
}
var crc = -1;
for (var i = 0; i < input.length; ++i)
crc = (crc >>> 8) ^ crcTable[(crc ^ input.charCodeAt(i)) & 0xFF];
return (crc ^ -1) >>> 0;
}
exports.crc32 = crc32;
exports.default = crc32;