Для подсчета CRC блока данных требуется создать таблицу.
Вот то что нашел в инете:
Должен получится массив: 0x0000, 0xC1C0, 0x81C1 .... и т.д.
То что я передал AutoIT:
И получаю последовательность 0x0000, 0xA001
Подскажите где ошибся, а то в Си не силен.
Вот то что нашел в инете:
Код:
Word MakeCRC16Table(void)
{
Word r;
for(int i=0; i<256; i++)
{
r = ((Word)i)<<8;
for(byte j=0; j<8; j++)
{
if(r&(1<<15)) r=(r<<1)^0xA001;
else r=r<<1;
}
crctable[i]=r;
}
}
То что я передал AutoIT:
Код:
Func MakeCRC16Table()
Local $r, $poly = 0xA001
For $i = 0 To 255
$r = BitAND(BitShift($i, -8), 0xFFFF) ; Отсекаем старшие разряды
For $j = 0 To 7
MsgBox(0, $j, "r= " & Hex($r, 4))
If BitAND($r, 0x8000) Then
$r = BitAND(BitShift($r, -1), 0xFFFF)
$r = BitXOR($r, $poly)
$r = BitAND($r, 0xFFFF)
Else
$r = BitAND(BitShift($r, -1), 0xFFFF)
EndIf
Next
MsgBox(0, " ", Hex($r, 4))
Next
EndFunc
И получаю последовательность 0x0000, 0xA001
Подскажите где ошибся, а то в Си не силен.