求助:求校验码CRC—16的算法 点击:1047 | 回复:3



笨人

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 0回
  • 年度积分:0
  • 历史总积分:53
  • 注册:2003年1月27日
发表于:2003-09-17 17:12:00
楼主
求助各位:求校验码CRC—16的算法及用Delphi或其它语言的编的程序。



GaryLin

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 1186回
  • 年度积分:0
  • 历史总积分:1263
  • 注册:2003年4月15日
发表于:2003-09-08 10:42:00
1楼
Delphi - crc-16 http://www.ibrtses.com/delphi/dcrc.html A C++ class library http://www.codeproject.com/library/classlib.asp?target=crc16 ReHash - A console-based hash calculator http://www.codeproject.com/cpp/rehash.asp?target=crc16 http://homepage3.nifty.com/izushi/OTN/tn2/calcCRC.html

PROFIBUS-DP

  • 精华:0帖
  • 求助:0帖
  • 帖子:74帖 | 306回
  • 年度积分:0
  • 历史总积分:637
  • 注册:2003年8月29日
发表于:2003-09-09 17:56:00
2楼
很好办,不断地xor就行了

opal

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 48回
  • 年度积分:0
  • 历史总积分:61
  • 注册:2002年4月23日
发表于:2003-09-17 17:12:00
3楼
unsigned int CRC16(); void main() {unsigned char data[2]; unsigned int crc; printf("pls input data\n"); scanf("%d,%d",&data[0],&data[1]); crc=CRC16(data, strlen(data)); printf("crc=%x\n",crc); } #define POLY 0x8408 unsigned int CRC16(char *data_p, unsigned int length) { unsigned char i; unsigned int data; unsigned int crc = 0xffff; if(length == 0) return (~crc); do { for(i=0,data=((unsigned int)0xFF & *data_p++); i < 8; i++, data >>= 1) { if((crc & 0x0001) ^ (data & 0x0001)) crc = (crc >> 1) ^ POLY; else crc >>= 1; } } while (--length); crc = ~crc; data = crc; crc = (crc << 8) | ((data >> 8) & 0xFF); return (crc); }

热门招聘
相关主题

官方公众号

智造工程师