保誠-保戶業務員媒合平台
HelenHuang
2022-06-09 9bdb95c9e34cef640534e5e5a1e2225a80442000
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
import { Buffer } from 'buffer';
import createBuffer from './create_buffer';
import defineCrc from './define_crc';
 
const crc16xmodem = defineCrc('xmodem', function(buf, previous) {
  if (!Buffer.isBuffer(buf)) buf = createBuffer(buf);
 
  let crc = typeof previous !== 'undefined' ? ~~previous : 0x0;
 
  for (let index = 0; index < buf.length; index++) {
    const byte = buf[index];
    let code = (crc >>> 8) & 0xff;
 
    code ^= byte & 0xff;
    code ^= code >>> 4;
    crc = (crc << 8) & 0xffff;
    crc ^= code;
    code = (code << 5) & 0xffff;
    crc ^= code;
    code = (code << 7) & 0xffff;
    crc ^= code;
  }
 
  return crc;
});
 
export default crc16xmodem;