| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 
 | function crc16(hexString) {let crc = 0x0000;
 const polynomial = 0x1021;
 let byte_val, bit, c15;
 for (let i = 0; i < hexString.length / 2; i++) {
 byte_val = parseInt(hexString.substr(i * 2, 2), 16);
 for (let k = 0; k < 8; k++) {
 bit = ((byte_val >> (7 - k) & 1) == 1);
 c15 = ((crc >> 15 & 1) == 1);
 crc <<= 1;
 if (c15 ^ bit) {
 crc ^= polynomial;
 }
 }
 }
 crc &= 0xffff;
 return ('0000' + crc.toString(16)).slice(-4);
 }
 
 |