Есть простая программка на С++. вычисляет CRC. Нужна помощь в переводе ее на Python 2.7 Ниже текст:
// функция рассчитывает контрольную сумму
// последовательности байтов и возвращает результат.
// *InputData - указатель на последовательность байтов.
// BytesNumber - количество байтов,
// для которых считается контрольная сумма.
// Offset - смещение относительно начала последовательности
// байтов, с которого начинает считаться контрольная сумма
// (0 - без смещения).
// Возвращает контрольную сумму.
unsigned char
CrcMaker(unsigned char *InputData, unsigned char BytesNumber, unsigned char Offset)
{
// Служебные параметры.
register unsigned char i, j, Data, CrcCode = 0, Polinom = 0x69;
for (i = Offset; i < BytesNumber + Offset; i++) {
Data = InputData[i];
for (j = 0; j < 8; j++) {
if (CrcCode & (1 << 7)) {
CrcCode *= 2;
if (Data & (1 << 7))
CrcCode ++;
CrcCode ^= Polinom;
} else { // if (CrcCode & (1 << 7))
CrcCode *= 2;
if (Data & (1 << 7))
CrcCode ++;
} // if (CrcCode & (1 << 7))
Data *= 2;
} // for (j = 0; j < 8; j++)
} // for (i = Offset; i < BytesNumber + Offset; i++)
// Вернѐм контрольную сумму.
return CrcCode;
} // unsigned char ucCrcMaker ( ... )
//~~~~~~~~~~~~~~~~~~~~~~~~~~