All files / png / _crc.ts

100.00% Branches 5/5
100.00% Lines 18/18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
x3
x6
x6
x774
x774
x6918
x6918
x774
x774
x6
x3
 
x3
x230
x230
x7902
x7902
x230
x230

















const CRC = function (): Uint32Array {
  const array = new Uint32Array(256);
  for (let i = 0; i < 256; ++i) {
    let x = i;
    for (let j = 0; j < 8; ++j) {
      x = (x & 1) ? 0xEDB88320 ^ (x >>> 1) : x >>> 1;
    }
    array[i] = x;
  }
  return array;
}();

export function calcCRC(buffer: Uint8Array | Uint8ClampedArray): number {
  let crc = 0xFFFFFFFF;
  for (let i = 0; i < buffer.length; ++i) {
    crc = CRC[(crc ^ buffer[i]) & 0xFF] ^ (crc >>> 8);
  }
  return ~crc >>> 0;
}