Skip to content

Instantly share code, notes, and snippets.

@doochik
Created November 7, 2014 10:29
Show Gist options
  • Save doochik/979d463cb2d064d0becd to your computer and use it in GitHub Desktop.
Save doochik/979d463cb2d064d0becd to your computer and use it in GitHub Desktop.
function calcFletcherSum(data) {
var length = data.length, i = 0, sum1 = 0xFF, sum2 = 0xFF;
while (length) {
var tlen = length > 21 ? 21 : length;
length -= tlen;
do {
var ch = data.charCodeAt(i++);
if (ch > 255) {
var ch2 = ch >> 8;
ch &= 0xFF;
ch ^= ch2;
}
sum1 += ch;
sum2 += sum1;
} while (--tlen);
sum1 = (sum1 & 0xFF) + (sum1 >> 8);
sum2 = (sum2 & 0xFF) + (sum2 >> 8);
}
var result = (((sum1 & 0xFF) + (sum1 >> 8)) << 8) | ((sum2 & 0xFF) + (sum2 >> 8));
return result == 0xFFFF ? 0 : result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment