| 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?
 |  |