1 2 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); }
|