Ostatnio aktywny 1 month ago

racerxdl's Avatar Lucas Teske zrewidował ten Gist 7 years ago. Przejdź do rewizji

1 file changed, 30 insertions

crc.c(stworzono plik)

@@ -0,0 +1,30 @@
1 + #define POLY 0xA001
2 + #define POLY 0x8005
3 + unsigned 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 +
19 + int 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 +
Nowsze Starsze