You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
692 B
JavaScript

/**
* Calculate CRC16-CCIT checksum
* Code ported to JavaScript from Java
*
* Original source:
* http://introcs.cs.princeton.edu/java/51data/CRC16CCITT.java.html
* CRC16-CCIT for 123456789 = 29b1
*
* Online calculator for testing:
* http://zorc.breitbandkatze.de/crc.html
*/
function CRC16_CCITT(charach){
var crc = 0xFFFF;
var polynomial = 0x1021;
var i=0, k=0, byte_val, bit, c15;
for (; i < charach.length; i++) {
byte_val = charach[i].charCodeAt(0);
for (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 crc.toString(16);
}