// Calculo de CRC
// (C) 2009 Con Clase
// Salvador Pozo
#include <iostream>
using namespace std;
const unsigned int CCITT_POLYNOM = 0x1021;
typedef unsigned short int WORD;
typedef unsigned char BYTE;
WORD CalcCRC(WORD uCRC, BYTE bData);
int main() {
WORD uCRC = 0xffff;
char cadena[] = "Cadena de prueba para calculo de CRC";
for(int i = 0; cadena[i]; i++)
uCRC = CalcCRC(uCRC, (BYTE)cadena[i]);
cout << "CRC: " << hex << uCRC << endl;
return 0;
}
WORD CalcCRC(WORD uCRC, BYTE bData) {
int i;
BYTE bD= bData;
for(i = 0; i < 8; i++) {
uCRC <<= 1;
if(bD & 0x0080) uCRC ^= CCITT_POLYNOM;
bD <<= 1;
}
return uCRC;
}