#ifndef CRC32_H #define CRC32_H #include #include #include #include /* * #define CRC_POLY_xxxx * * The constants of the form CRC_POLY_xxxx define the polynomials for some well * known CRC calculations. */ #define CRC_POLY_16 0xA001 #define CRC_POLY_32 0xEDB88320L #define CRC_POLY_CCITT 0x1021 #define CRC_POLY_DNP 0xA6BC #define CRC_POLY_KERMIT 0x8408 #define CRC_POLY_SICK 0x8005 /* * #define CRC_START_xxxx * * The constants of the form CRC_START_xxxx define the values that are used for * initialization of a CRC value for common used calculation methods. */ #define CRC_START_8 0x00 #define CRC_START_16 0x0000 #define CRC_START_MODBUS 0xFFFF #define CRC_START_XMODEM 0x0000 #define CRC_START_CCITT_1D0F 0x1D0F #define CRC_START_CCITT_FFFF 0xFFFF #define CRC_START_KERMIT 0x0000 #define CRC_START_SICK 0x0000 #define CRC_START_DNP 0x0000 #define CRC_START_32 0xFFFFFFFFL class CCRC32 { public: CCRC32(); void InitTable(); quint32 ComputeCRC32( const unsigned char *input_str, qulonglong num_bytes ); quint32 ComputeCRC32( QByteArray Buffer); quint32 UpdateCRC32( quint32 crc, unsigned char c ); private: quint32 mCRC32Table[256]; }; #endif // CRC32_H