333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
'use strict';
 
// Note: we can't get significant speed boost here.
// So write code to minimize size - no pregenerated tables
// and array tools dependencies.
 
 
// Use ordinary array, since untyped makes no boost here
function makeTable() {
  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));
    }
    table[n] = c;
  }
 
  return table;
}
 
// Create table on load. Just 255 signed longs. Not a problem.
var crcTable = makeTable();
 
 
function crc32(crc, buf, len, pos) {
  var t = crcTable,
      end = pos + len;
 
  crc ^= -1;
 
  for (var i = pos; i < end; i++) {
    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
  }
 
  return (crc ^ (-1)); // >>> 0;
}
 
 
module.exports = crc32;