CRC 校验代码,方便查阅

查表法,c语言实现;用的是比较小的表

// 7b10 typedef unsigned char u8; typedef unsigned short u16; #include <stdio.h> u16 const wCRCTalbeAbs[16] = { 0x0000, 0xCC01, 0xD801, 0x1400, 0xF001, 0x3C00, 0x2800, 0xE401, 0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400, }; u16 CRC16(u8* pchMsg, u8 wDataLen) { u16 wCRC = 0xFFFF; u8 i; u8 chChar; for (i = 0; i < wDataLen; i++) { chChar = *pchMsg++; wCRC = wCRCTalbeAbs[(chChar ^ wCRC) & 15] ^ (wCRC >> 4); wCRC = wCRCTalbeAbs[((chChar >> 4) ^ wCRC) & 15] ^ (wCRC >> 4); } return wCRC; } int main(int argc, char const *argv[]) { u8* pchMsg; u8 dataIn[] = {12,34,56,78}; pchMsg = dataIn; u16 result = CRC16(pchMsg, 4); printf("%d\n", result); return 0; }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfszw.html