您的位置:首页 > 编程语言 > C#

C# 带多项式参数的 CRC16计算

2012-11-28 21:59 253 查看
网上很多CRC16计算方式,特别是C#的,包括我以前写的查表法计算的出来的都是比较常见的计算方式。

以下是 带多项式参数的 CRC16计算函数 例如: Poly=0x8408 

转载请注明出处:一叶知秋(www.yyzq.net)(QQ:275623749)

/// <summary>
/// 多项式参数 CRC16计算
/// </summary>
/// <param name="Cmd">命令</param>
/// <param name="Poly">多项式</param>
/// <returns></returns>
public byte[] GetCRC16ByPoly(byte[] Cmd, ushort Poly)
{
byte[] CRC = new byte[2];
ushort CRCValue = 0xFFFF;
for (int i = 0; i < Cmd.Length; i++)
{
CRCValue = (ushort)(CRCValue ^ Cmd[i]);
for (int j = 0; j < 8; j++)
{
if ((CRCValue & 0x0001) != 0)
{
CRCValue = (ushort)((CRCValue >> 1) ^ Poly);
}
else
{
CRCValue = (ushort)(CRCValue >> 1);
}
}
}
return BitConverter.GetBytes(CRCValue);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: