累加和校验算法
/// <summary>
/// 累加和校验
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
public static byte CheckSum(byte[] bytes)
{
int Data= 0;
foreach (byte b in bytes)
{
Data+= b;
}
return (byte)(Data% 256);
}
CRC16校验算法
/// <summary>
/// CRC16校验
/// </summary>
/// <param name="buffer"></param>
/// <param name="DataEnd"></param>
/// <returns></returns>
private UInt16 CRC16(byte[] buffer, int DataEnd)
{
int key = 0x08408;
int CRC, i;
byte j;
CRC = 0;
for (i = 0; i < DataEnd; i++)
{
CRC ^= buffer[i];
for (j = 0; j < 8; j++)
{
if ((CRC & 0x0001) > 0) { CRC >>= 1; CRC ^= key ; }
else CRC >>= 1;
}
}
return (UInt16)CRC;
}