分享一个CRC7的算法, 在C#下编程
byte 可以用 unsigned char 代替
byte[] pp 是数组对象,可以换成 char* pp
其它的相信各位大虾都懂的
byte crc7_1(byte[] pp, int len)
{
byte i;
int j = 0;
byte crc = 0;
while (len-- > 0)
{
for (i = 0x80; i != 0; i >>= 1)
{
//判断第7位是否为1
if ((crc & 0x40) != 0)
{
crc <<= 1;
crc ^= 9;
}
else
{
crc <<= 1;
}
if ((pp[j] & i) != 0)
{
crc ^= 9;
}
}
j++;
}
return (byte)(crc&0x7F);
}
有个小小想法:如果大家能把平时用到的CRC算法能共享一下,我用程序把算法集中起来,呵呵。。。。大家用起来变方便了。
程序刚完成,难免有些bug,希望大家多多指出。谢谢!
如有爱好 C#.net 编程的朋友,我可共享源码,希望把一些常用的CRC算法集中在一起,分享给志同道合的朋友,并一起维护她成长。。
|