工作需要 从别人那里 要的
using System;
using System.Collections.Generic;
using System.Text;
namespace THSerialPortTool
{
public class CRC16
{
public static byte[] cal(byte[] buff, int index, int len)
{
byte h = 0xff;
byte l = 0xff;
for (uint i = (uint)index; i < (index + len); i++)
{
h = (byte)(buff[i] ^ h);
for (uint j = 0; j < 8; j++)
{
byte c = (byte)(l & 0x80);
l = (byte)(l << 1);
byte d = (byte)(h & 0x80);
h = (byte)(h << 1);
if (c != 0)
{
h = (byte)(h | 1);
}
if (d != 0)
{
h = (byte)(h ^ 0x10);
l = (byte)(l ^ 0x21);
}
}
}
return new byte[] { h, l };
}
public static bool check(byte[] buff, int index, int len)
{
byte h = 0x55;
byte l = 170;
for (uint i = (uint)index; i < (index + len); i++)
{
h = (byte)(buff[i] ^ h);
for (uint j = 0; j < 8; j++)
{
byte c = (byte)(l & 0x80);
l = (byte)(l << 1);
byte d = (byte)(h & 0x80);
h = (byte)(h << 1);
if (c != 0)
{
h = (byte)(h | 1);
}
if (d != 0)
{
h = (byte)(h ^ 0x10);
l = (byte)(l ^ 0x21);
}
}
}
return ((h == 0) && (l == 0));
}
}
}