furnace/src/check/calc_checksum.c
tildearrow c80d3a4229 aaaaa
2023-09-06 20:25:44 -05:00

25 lines
505 B
C

#include <stdio.h>
int main(int argc, char** argv) {
if (argc<2) {
printf("usage: %s text\n",argv[0]);
return 1;
}
unsigned int checker=0x11111111;
unsigned int checker1=0;
int index=0;
for (char* i=argv[1]; *i; i++) {
checker^=((unsigned int)(*i))<<index;
checker1+=(unsigned int)(*i);
checker=(checker>>1|(((checker)^(checker>>2)^(checker>>3)^(checker>>5))&1)<<31);
checker1<<=1;
index=(index+1)&31;
}
printf("%.8x %x\n",checker,checker1);
return 0;
}