#include int main (int argc, char *argv[]) { unsigned int crc, inputByte, inputBit; int i, j; if (argc < 2) { return 0; } crc = 0; for (i = 0; argv[1][2 * i] != '\0'; i++) { sscanf (argv[1] + 2 * i, "%02X", &inputByte); for (j = 0; j < 8; j++) { inputBit = ( (inputByte & (1 << j)) != 0 ); inputBit ^= (crc & 1); crc >>= 1; if (inputBit) { crc ^= 0x8C; } } } printf ("%02X\n", crc); return 0; }