#include <stdio.h>
#include <stddef.h>
#include <stdint.h>
uint32_t crc32(const char *s,size_t n) {
uint32_t crc=0xFFFFFFFF;
for(size_t i=0;i<n;i++) {
char ch=s[i];
for(size_t j=0;j<8;j++) {
uint32_t b=(ch^crc)&1;
crc>>=1;
if(b) crc=crc^0x04C11DB7;
ch>>=1;
}
}
return ~crc;
}
int main()
{
char* a = "Hello World";
int crc = crc32(a, 11);
printf("Hello World %X", crc
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRkZWYuaD4KI2luY2x1ZGUgPHN0ZGludC5oPgoKdWludDMyX3QgY3JjMzIoY29uc3QgY2hhciAqcyxzaXplX3QgbikgewoJdWludDMyX3QgY3JjPTB4RkZGRkZGRkY7CgkKCWZvcihzaXplX3QgaT0wO2k8bjtpKyspIHsKCQljaGFyIGNoPXNbaV07CgkJZm9yKHNpemVfdCBqPTA7ajw4O2orKykgewoJCQl1aW50MzJfdCBiPShjaF5jcmMpJjE7CgkJCWNyYz4+PTE7CgkJCWlmKGIpIGNyYz1jcmNeMHgwNEMxMURCNzsKCQkJY2g+Pj0xOwoJCX0KCX0KCQoJcmV0dXJuIH5jcmM7Cn0KCmludCBtYWluKCkKewogICAgY2hhciogYSA9ICJIZWxsbyBXb3JsZCI7CiAgICBpbnQgY3JjID0gY3JjMzIoYSwgMTEpOwogICAgcHJpbnRmKCJIZWxsbyBXb3JsZCAlWCIsIGNyYyk7CgogICAgcmV0dXJuIDA7Cn0=