Здравствуйте, хабровчане! Недавно я вытащил алгоритм расчета контрольной суммы из одного приложения, но столкнулся с проблемой при попытке запуска кода - код выдавал неверную контрольною сумму.
Вот сам код:
function crc_texkom(arrby) {
var n = 4;
var arrby2 = []
if (arrby.length < 8) {
return 255;
}
var n2 = 0;
var n3 = 4;
while (n2 < n) {
arrby2[n2] = arrby[n3];
++n2;
--n3;
}
var n4 = 0;
var n5 = 0;
do {
var by = (n - 1);
if (n <= 0) break;
var n6 = n4 ^ 255 & arrby2[n5];
n5 = (n5 + 1);
var n7 = n6;
for (var n8 = 0; n8 < 8; n8 = Number((n8 + 1))) {
if ((n7 & 128) > 0) {
n7 = 49 ^ n7 << 1;
continue;
}
n7 <<= 1;
}
n4 = n7;
n = by;
} while (true);
return 255 & (n4 & -2);
}
Вот код который я вводил: 32 32 44 55 (
crc_texkom([0x32, 0x32, 0x44, 0x55]).toString(16)
), ожидался результат 5A, а выдало FF , подскажите в чем проблема?
UPD#1 : Увидел заглушку на длину массива попробовал ввести как
crc_texkom([0x00, 0x00, 0x00, 0x00, 0x32, 0x32, 0x44, 0x55]).toString(16)
но получил 4E