//--------------------------------------------------------------------------- #pragma hdrstop #include "CRC.h" //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- //#define UPDC16(cp,crc) (Crc16Table[((crc^cp) & 0xff)] ^ (crc >> 8)) //#define UPDCCCITT(cp,crc) (CrcCcittTable[((crc >> 8) & 0xff)] ^ (crc << 8) ^ cp) //#define UPDC32(octet,crc) (Crc32Table[((crc) ^ (octet)) & 0xff] ^ ((crc) >> 8)) //--------------------------------------------------------------------------- unsigned short Crc16(unsigned char *Data, unsigned long Len) { register unsigned short crc16 = 0; while (Len--) { //crc16 = UPDC16(*Data,crc16); crc16 = (Crc16Table[((crc16^(*Data)) & 0xff)] ^ (crc16 >> 8)); Data++; } return crc16; } //--------------------------------------------------------------------------- unsigned short CrcCcitt(unsigned char *Data, unsigned long Len) { register unsigned short crcccitt = 0; while (Len--) { //crcccitt = UPDCCCITT(*Data,crcccitt); crcccitt = (CrcCcittTable[((crcccitt >> 8) & 0xff)] ^ (crcccitt << 8) ^ (*Data)); Data++; } return crcccitt; } //--------------------------------------------------------------------------- unsigned long Crc32(unsigned char *Data, unsigned long Len) { register unsigned long crc32 = 0xFFFFFFFFUL; while (Len--) { //crc32 = UPDC32(*Data,crc32); crc32 = (Crc32Table[((crc32) ^ (*Data)) & 0xff] ^ ((crc32) >> 8)); Data++; } return ~crc32; } //---------------------------------------------------------------------------