NickProgramm
@NickProgramm
Люблю front-end

Расчет контрольной суммы?

Здравствуйте, хабровчане! Недавно я вытащил алгоритм расчета контрольной суммы из одного приложения, но столкнулся с проблемой при попытке запуска кода - код выдавал неверную контрольною сумму.

Вот сам код:
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
  • Вопрос задан
  • 139 просмотров
Пригласить эксперта
Ответы на вопрос 1
longclaps
@longclaps
Недавно я вытащил алгоритм расчета контрольной суммы из одного приложения

Зачем рыскать по помойкам при наличии стандартных алгоритмов? Хотите разобраться как оно устроено - есть книжка.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы