项目涉及CRC的数据校验,写点学习笔记。CRC校验具体应用视实际所选的多项式而定,本次g(x)=x8+x2+x+1,陪集码FFH。
public byte CRC8(byte crcPoly, byte[] crcData)
{
byte poly = crcPoly;
byte crcResult = 0xFF;
byte byteCRCTemp = 0x00;
byte[] data = new byte[crcData.Length + 1];
crcData.CopyTo(data, 0);
data[crcData.Length] = 0x00;
byteCRCTemp = (data[0]);
for (int i = 1; i < data.Length; i++)
{
byte tempData = data[i];
int j = 0;
while (j < 8)
{
j += 1;
byte moveOutBit = (byte)(byteCRCTemp & 0x80);
byteCRCTemp <<= 1;
byteCRCTemp |= (byte)(tempData >> 7);
tempData <<= 1;