Тема: расчет CRC16
Показать сообщение отдельно
  #7  
Старый 28.06.2010, 21:52
Hobert Hobert вне форума
Прохожий
 
Регистрация: 15.06.2010
Сообщения: 9
Репутация: 10
По умолчанию

Спасибо, теперь понял.

только вот видимо проблема у меня еще и функции crc16, так как при вычислении КС, ответ приписанный к входным данным, при повторном вычислении, должен возвращать в ответ 0.

Т.е. Вх: F70302640008 КС: 10FD.
А при Вх: F7030264000810FD КС: 00.

Код:
function crc16(data:Byte;crc:WORD):Word;
begin  //UpdCrc
 crc16:=crctab[((crc shr 8) and 255)] xor (crc SHL 8) XOR data ;
end;

А получается:
Вх: F70302640008 КС: D368
Вх: F70302640008D368 КС: 7EB2

все С# функция выглядит вот так
Код:
unsigned short Crc16(unsigned char * pcBlock, unsigned short len)
{
    unsigned short crc = 0xFFFF;
 
    while (len--)
        crc = (crc >> 8) ^ Crc16Table[(crc & 0xFF) ^ *pcBlock++];
 
    return crc;

может найдутся люди, которые перефразируют ее в Delphi?
Ответить с цитированием