项目涉及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;
if (moveOutBit == 0x80)//最高位为1,移出跟Poly的最高位消掉
{
byt

这篇博客记录了CRC数据校验的学习过程,重点介绍了使用C#实现CRC8算法的细节,包括信息字的扩展和XOR操作。文中提到了CRC校验的抗失步能力和陪集码的概念,举例说明了(48,40)码的陪集码生成,以增强校验的可靠性。
最低0.47元/天 解锁文章
1157

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



