crc8是别处搬来的,crc4是自己改的,亲测可用
byte crc8(byte[] buffer, int length)
{
byte crc, i, j;
crc = 0 ;
for (j = 0 ; j<length; j ++ )
{
for (i = 0x01 ; i != 0 ; i <<= 1 )
{
if (((crc & 0x01 ) ^ (buffer[j] & i)) == 1 )
{
crc ^= 0x18 ;
crc >>= 1 ;
crc |= 0x80 ;
}
else
crc = (byte ) (crc >> 1 );
}
}
return crc;
}
byte crc4(byte[] data, int length)
{
byte i;
byte crc = 0;
int index = 0;
while (length-->0)
{
crc ^= data[index];
index++;
for (i = 0; i < 8; ++i)
{
if ((crc & 1) == 1)
crc = (byte)((crc >> 1) ^ 0x0C);
else
crc = (byte)(crc >> 1);
}
}
return crc;
}