public static byte[] CRC16(byte[] data)
{
byte[] temdata = new byte[data.Length + 2];
int xda, xdapoly;
int i, j, xdabit;
xda = 0xFFFF;
xdapoly = 0xA001;
for (i = 0; i < data.Length; i++)
{
xda ^= data[i];
for (j = 0; j < 8; j++)
{
xdabit = (int)(xda & 0x01);
xda >>= 1;
if (xdabit == 1)
xda ^= xdapoly;
}
}
Array.Copy(data, 0, temdata, 0, data.Length);
temdata[temdata.Length - 2] = (byte)(xda & 0xFF);
temdata[temdata.Length - 1] = (byte)(xda >> 8);
//temdata[temdata.Length - 2] = (int)(xda & 0xFF);
//temdata[temdata.Length - 1] = (int)(xda >> 8);
return temdata;
}