#cpp
//-----------------crc8()-------------------------
uint8 crc8(uint8*buf, uint8 data_byte)
{
uint8 crc=0x00;
uint8 data_bit=0x80;
while(data_byte>0)
{
if(((crc&0x01)!=0)!=((buf[data_byte]&data_bit)!=0))
{
crc>>=1;
crc^=0xCD;
}
else crc>>=1;
data_bit>>=1;
if(!data_bit)
{
data_bit=0x80;
data_byte--;
}
}
return(crc);
}
nesco, спасибо, щас посмотрю
------------ Дoбавленo в 22.36:
А как определить полином?
Все что у меня есть - это кусок кода, построенный на побитовых операциях (см. выше).
Попробовал их повторить - только запутался:
Может можно куском кода как-нибудь вставить?
------------ Дoбавленo в 13.36:
Попытался сделать на Visual Basic, пишет Sintax Error.
А где - не пишет.
for i = 0 to UBound(buf)
'if (((crc and 1) <> 0) <> ((buf(i) and data_bit) <> 0)) Then
if (((crc and 1) <> 0) <> ((Chr("&h" & buf(i)) and data_bit) <> 0)) Then
crc = crc >> 1
crc = crc Xor 205
else
crc = crc >> 1
End If
data_bit = data_bit >> 1
if (data_bit <> 0) Then
else
data_bit = 128
i = i - 1
End If
next
sys.onRes crc
End Sub



Поиск
Друзья
Администрация