Commit | Line | Data |
---|---|---|
d29693bf RD |
1 | /* crc32hash.c - derived from linux/lib/crc32.c, GNU GPL v2 */ |
2 | /* Usage example: | |
3 | $ ./crc32hash "Dual Speed" | |
4 | */ | |
5 | ||
6 | #include <string.h> | |
7 | #include <stdio.h> | |
8 | #include <ctype.h> | |
9 | #include <stdlib.h> | |
10 | ||
b7ed698c | 11 | static unsigned int crc32(unsigned char const *p, unsigned int len) |
d29693bf RD |
12 | { |
13 | int i; | |
14 | unsigned int crc = 0; | |
15 | while (len--) { | |
16 | crc ^= *p++; | |
17 | for (i = 0; i < 8; i++) | |
18 | crc = (crc >> 1) ^ ((crc & 1) ? 0xedb88320 : 0); | |
19 | } | |
20 | return crc; | |
21 | } | |
22 | ||
23 | int main(int argc, char **argv) { | |
24 | unsigned int result; | |
25 | if (argc != 2) { | |
26 | printf("no string passed as argument\n"); | |
27 | return -1; | |
28 | } | |
ffab10ec | 29 | result = crc32((unsigned char const *)argv[1], strlen(argv[1])); |
d29693bf RD |
30 | printf("0x%x\n", result); |
31 | return 0; | |
32 | } |