fork download
  1. #include <stdio.h>
  2. #include <stdint.h>
  3.  
  4. uint8_t _crc8_update(uint8_t crc, uint8_t data)
  5. {
  6. uint8_t i;
  7.  
  8. crc = crc ^ data;
  9.  
  10. for (i = 0; i < 8; i++)
  11. {
  12. if (crc & 0x01)
  13. crc = (crc >> 1) ^ 0x8C;
  14. else
  15. crc >>= 1;
  16. }
  17.  
  18. return crc;
  19. }
  20.  
  21. int crc8(uint8_t *darry, uint16_t sz)
  22. {
  23. uint8_t crc = 0;
  24. uint8_t i;
  25.  
  26. for (i = 0; i < sz; i++)
  27. crc = _crc8_update(crc, darry[i]);
  28.  
  29. return crc;
  30. }
  31.  
  32. int main(void)
  33. {
  34. uint8_t serno[] = { 0x53, 0xe7, 0x73, 0x4c, 0x68, 0x4f, 0x03, 0x4e, 0x33 };
  35.  
  36. uint8_t crc = crc8(serno, sizeof(serno)/sizeof(uint8_t));
  37. printf("CRC8 = %02X\n", crc);
  38.  
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0.01s 5300KB
stdin
Standard input is empty
stdout
CRC8 = 00