Остання активність 1 month ago

Версія f51de261fb187ab516c9d6e099a6dc659227e951

crc.c Неформатований
1#define POLY 0xA001
2#define POLY 0x8005
3unsigned crc16(unsigned crc, unsigned char *buf, size_t len)
4{
5 while (len--) {
6 crc ^= *buf++;
7 crc = crc & 1 ? (crc >> 1) ^ POLY : crc >> 1;
8 crc = crc & 1 ? (crc >> 1) ^ POLY : crc >> 1;
9 crc = crc & 1 ? (crc >> 1) ^ POLY : crc >> 1;
10 crc = crc & 1 ? (crc >> 1) ^ POLY : crc >> 1;
11 crc = crc & 1 ? (crc >> 1) ^ POLY : crc >> 1;
12 crc = crc & 1 ? (crc >> 1) ^ POLY : crc >> 1;
13 crc = crc & 1 ? (crc >> 1) ^ POLY : crc >> 1;
14 crc = crc & 1 ? (crc >> 1) ^ POLY : crc >> 1;
15 }
16 return crc;
17}
18
19int main(void)
20{
21 unsigned crc;
22 unsigned char buf[] = {0x00, 0x19, 0x02 };
23
24 crc = crc16(0x0, buf, 3);
25 printf("%04x\n", crc);
26 crc = crc16(0xFFFF, buf, 3);
27 printf("%04x\n", crc);
28 return 0;
29}
30
31