public static byte CRC8 ( byte[] buffer ) { byte crc = 0; for ( int j = 0; j < buffer.Length; j++ ) { crc ^= buffer[j]; for ( int i = 0; i < 8; i++ ) { if ( ( crc & 0x01 ) != 0 ) { crc >>= 1; crc ^= 0x8c; } else { crc >>= 1; } } } return crc; }