Untitled
unknown
c_cpp
3 years ago
664 B
12
Indexable
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <inttypes.h> #include <math.h> uint32_t crc_32_bitoriented(unsigned char* buffer, int length) { int i, j; uint32_t poly = 0b10000001010000010100000110101011; uint32_t rev_poly = ~poly; uint32_t crcreg = 0x0; for (j = 0; j < length; ++j) { unsigned char b = buffer[j]; for (i = 0; i < 8; ++i) { if ((crcreg ^ b) & 1) { crcreg = (crcreg >> 1) ^ poly; } else { crcreg >>= 1; } b >>= 1; } } return crcreg ^ 0x0; } int main(void){ uint32_t crc = crc_32_bitoriented("123456789", 9); printf("%u\n", crc); return EXIT_SUCCESS; }
Editor is loading...