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;
}
本文详细介绍了CRC16校验算法的具体实现过程,通过C#代码展示了如何计算CRC16校验值并将其附加到原始数据中,确保数据传输的完整性和准确性。
2455

被折叠的 条评论
为什么被折叠?



