Hex文件校验C语言实现
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int analyseHEX(const char hex[], int len)
{
printf(“hex = %s, len = %d\n” , hex, len);
int data;
int checksum = 0;
char hexString[3] = {0};
int j = 0;
for(int i = 1; len - 2 > 1; len = len-2)
{
hexString[0] = hex[i++];
hexString[1] = hex[i++];
data = strtol(hexString,NULL,16);
checksum += (int)data;
j = i;
}
if((checksum %= 256) != 0)
{
checksum %= 256;
}
else
{
checksum = 0x100;
}
checksum = 0x100 - checksum;
hexString[0] = hex[j++];
hexString[1] = hex[j++];
data = strtol(hexString,NULL,16);
return (checksum == (int)data) ? 1 : 0;
}
int main()
{
//char hex[] = “:020000040000FA”;
char hex[] = “:208C34009800EE000100020D050113FFFF14FF36FFFFFF12F800EF000100020D05011FFF00”;
printf("%d\n ", analyseHEX(hex, sizeof(hex) - 1));
return 0;
}