Имя: Пароль:
1C
1С v8
Расчёт CRC-16 с 0x1021 полиномом
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?
1 Dzenn
 
гуру
25.06.12
14:18
На 100% уверен, что для подобных задач есть dll-ки, которые надо просто найти. Не изобретай сферический велосипед в вакууме.
2 babiy
 
25.06.12
14:32
а не используя dll? и dll найти не могу. Может ктота использовал, то дайте ссылку...