多项式用的是ccitt的权CRC-CCITT=X16+X12+X5+1。比如说我接收了一个针,寸放在一个byte[]中,我现在想检测一下这个针是否是好针还是坏针!!
目前我知道的是用byte[]的内容与ccitt的权异或,最后结果如果为0就说明是正确的。如果不为0就说明是错误的。要求重新发!!
但是小弟知识不够呀。写不出这样的算法来。谁能帮我一下。谢谢了!!!
我的emal是[email protected]。贴上来或是发到油箱里都可以!!!
目前我知道的是用byte[]的内容与ccitt的权异或,最后结果如果为0就说明是正确的。如果不为0就说明是错误的。要求重新发!!
但是小弟知识不够呀。写不出这样的算法来。谁能帮我一下。谢谢了!!!
我的emal是[email protected]。贴上来或是发到油箱里都可以!!!
注意一点,它是对8位或16位还是32位做循环crc校验
http://blog.ednchina.com/hongbobo/49701/message.aspxCRC源码及分析
http://www.powerprotocol.com.cn/CRC/crcver.pdf这个更强大
http://www.google.cn/search?rlz=1C1GGLS_zh-CNCN298CN303&sourceid=chrome&ie=UTF-8&q=crc校验
{/* 按位计算CRC16 */
unsigned char i;
unsigned int crc=0;
while((len--) != 0)
{
for(i = 0x80; i != 0; i >>= 1)
{
/* 余式CRC乘以2再求CRC */
if((crc & 0x8000) != 0)
{
crc <<= 1;
crc ^= 0x1021;
}
else
{
crc <<= 1;
}
/* 再加上本位的CRC */
if((*dat & i)!=0)
{
crc ^= 0x1021;
}
}
dat++;
}
return(crc & 0xFFFF);
}