fork(4) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. typedef unsigned uint;
  6. uint crc32(const char* data,int size,uint crc=0) {
  7. crc=~crc;
  8. for(int i=0;i<size;i++) {
  9. crc^=data[i]&255;
  10. for(int j=0;j<8;j++) crc=crc>>1^0xEDB88320&-(crc&1);
  11. }
  12. return ~crc;
  13. }
  14.  
  15. int main(int argc, char const *argv[]) {
  16. enum { n=10 };
  17. char payload[n+4];
  18. srandom(time(0)); for(int i=0;i<n;i++) payload[i]=random();
  19.  
  20. uint payload_crc=crc32(payload,n);
  21. printf("crc(payload)=%08X\n",payload_crc);
  22.  
  23. uint x=0x624D8C3;
  24. char xd[4]={x,x>>8,x>>16,x>>24};
  25. uint xd_crc=crc32(xd,4);
  26. uint suffix=payload_crc^x;
  27. payload[n ]=suffix;
  28. payload[n+1]=suffix>>8;
  29. payload[n+2]=suffix>>16;
  30. payload[n+3]=suffix>>24;
  31. uint crc=crc32(payload,n+4);
  32. printf("crc(data )=%08X\n",crc);
  33. printf("crc(x )=%08X\n",xd_crc);
  34.  
  35. return 0;
  36. }
Success #stdin #stdout 0s 4780KB
stdin
Standard input is empty
stdout
crc(payload)=A7690E04
crc(data   )=DEADBEEF
crc(x      )=DEADBEEF