0
babiy
25.06.12
✎
14:12
|
Здраствуйте. Нужно расщитать CRC-16.
Процедура подсчета CRC16
CRC16 подсчитывается уравнением x^16+x^12+x^5+1, начальное значение 0х0. CRC считается на весь пакет, кроме байт CRCH и CRCL. Пример подсчета на языке С приведен ниже:
unsigned int CRC16(unsigned char *adr, unsigned char num)
{
unsigned char i, j;
unsigned int C;
unsigned int crc = 0;
for (j = 1; j <= num; j++, adr++)
{
C = ((crc >> 8) ^ *adr) << 8;
for (i = 0; i < 8; i++)
{
if (C & 0x8000)
C = (C << 1) ^ 0x1021;
else
C = C << 1;
}
crc = C ^ (crc << 8);
}
return crc;
}
где:
*adr – указатель на массив, на который считается CRC16
num - количество элементов в этом массиве
Как реализовать на 1С 8?
|
|