问题描述
unsignedshortcrc_16(unsignedchar*Array,unsignedchar*Rcvbuf,unsignedintLen)//Array输入数据起始地址;Len数据长度;RcvbufCRC存放缓冲;函数返回CRC16{unsignedintIX,IY,CRC;CRC=0xFFFF;//setall1if(Len<=0)CRC=0;else{Len--;for(IX=0;IX<=Len;IX++){CRC=CRC^(unsignedint)(Array[IX]);for(IY=0;IY<=7;IY++){if((CRC&1)!=0)CRC=(CRC>>1)^0xA001;elseCRC=CRC>>1;//}}}Rcvbuf[0]=(CRC&0xff00)>>8;//高位置Rcvbuf[1]=(CRC&0x00ff);//低位置CRC=Rcvbuf[0]<<8;CRC+=Rcvbuf[1];returnCRC;}
解决方案
解决方案二:
http://www.cnblogs.com/hantianwei/archive/2012/11/13/2767649.html
解决方案三:
C++代码要转换成C#吗?
解决方案四:
staticushortcrc_16(byte[]rcvs,byte[]rcvbuf,intlen){uintix,iy,crc;if(len<=0)return0;len--;crc=0;for(ix=0;ix<=len;ix++){crc=crc^rcvs[ix];for(iy=0;iy<=7;iy++){if((crc&1)!=0)crc=(crc>>1)^0xA001;elsecrc=crc>>1;}}rcvbuf[0]=(byte)((crc&0xff00)>>8);rcvbuf[1]=(byte)(crc&0xff00);crc=(uint)(rcvbuf[0]<<8);crc+=rcvbuf[1];return(ushort)crc;}