写的计算二进制文件的checksum程序有问题,求助
int main(int argc,char *argv[])
{
unsigned int cksum=0;
FILE *fp;
char ch;
if (!(fp=fopen("f:\\test1.rom","rb")))
{
printf("Error in open file!\n");
return 1;
}
ch = fgetc(fp);
while(ch!=EOF)
{
cksum += ch;
ch = fgetc(fp);
printf("%x ", cksum);
}
printf("checkSum: %x\n", cksum);
fclose(fp);
return 0;
}
下面是二进制文件:

下面是程序输出:
ffffffa0 ffffffa0 ffffffa0 ffffffb2 fffffff2 32 72 a2 d2 132 199 19b 20e 280 2f2 362 394 3c8 402 436 466 466 4c9 4c9 538 538 5a6 5a6 60c 60c 675 675 6dc 6dc 67c 67c 67c 690 6af 6cf 6d2 6a7 6a7 70d 72c 79c 79f 7a2 7a3 7a3 7aa 7aa 7b1 7b1 7c2 7c2 7c2 7a1 780 75f 73c 711 741 771 7b2 7df 826 86b 8b9 8fe 950 999 9dc 9dc 9fc 983 97f 98a 9ea 973 96f 97a 97a 97a 97a 96a 96a 96a 96a 96a 96a 97a 97a 9a2 9a2 9a2 9a2 9a2 9a2 9a2 9a2 9a2 9a2 9a2 9a2 9a2 9a2 964 965 965 965 965 965 965 965 965 96d 97a 97a 97a 97a 97a 97a 97a 982 982 982 982 982 982 9df 9b7 994 a08 a71 aee b11 ae1 b01 b01 b21 b21 b41 b41 b61 b61 b81 b08 b04 b0f b6f af8 af4 aff a97 a24 a20 a2b a0b 998 994 99f 9f2 a57 ad5 b4b b30 ba2 ba2 ba2 bc2 bc2 be2 be2 c02 c02 c22 c22 c42 bc9 bc5 bd0 c30 bb9 bb5 bc0 b58 ae5 ae1 aec acc a59 a55 a60 a0a 9f2 9d3 9c1 a28 9d6 a3b aa4 b10 b75 bde bde bde bde bde bde bfe b85 b81 b8c bec b75 b71 b7c b14 aa1 a9d aa8 a88 a15 a11 a1c a4e a2e a5f a48 a77 aa8 ae6 b15 b53 b8a baa bdb c11 c4b checkSum: c4b
请按任意键继续. . .
程序想要的结果是A0+0+0+12+...+3a ,cksum取低2 byte,应该怎么改?
{
unsigned int cksum=0;
FILE *fp;
char ch;
if (!(fp=fopen("f:\\test1.rom","rb")))
{
printf("Error in open file!\n");
return 1;
}
ch = fgetc(fp);
while(ch!=EOF)
{
cksum += ch;
ch = fgetc(fp);
printf("%x ", cksum);
}
printf("checkSum: %x\n", cksum);
fclose(fp);
return 0;
}
下面是二进制文件:

下面是程序输出:
ffffffa0 ffffffa0 ffffffa0 ffffffb2 fffffff2 32 72 a2 d2 132 199 19b 20e 280 2f2 362 394 3c8 402 436 466 466 4c9 4c9 538 538 5a6 5a6 60c 60c 675 675 6dc 6dc 67c 67c 67c 690 6af 6cf 6d2 6a7 6a7 70d 72c 79c 79f 7a2 7a3 7a3 7aa 7aa 7b1 7b1 7c2 7c2 7c2 7a1 780 75f 73c 711 741 771 7b2 7df 826 86b 8b9 8fe 950 999 9dc 9dc 9fc 983 97f 98a 9ea 973 96f 97a 97a 97a 97a 96a 96a 96a 96a 96a 96a 97a 97a 9a2 9a2 9a2 9a2 9a2 9a2 9a2 9a2 9a2 9a2 9a2 9a2 9a2 9a2 964 965 965 965 965 965 965 965 965 96d 97a 97a 97a 97a 97a 97a 97a 982 982 982 982 982 982 9df 9b7 994 a08 a71 aee b11 ae1 b01 b01 b21 b21 b41 b41 b61 b61 b81 b08 b04 b0f b6f af8 af4 aff a97 a24 a20 a2b a0b 998 994 99f 9f2 a57 ad5 b4b b30 ba2 ba2 ba2 bc2 bc2 be2 be2 c02 c02 c22 c22 c42 bc9 bc5 bd0 c30 bb9 bb5 bc0 b58 ae5 ae1 aec acc a59 a55 a60 a0a 9f2 9d3 9c1 a28 9d6 a3b aa4 b10 b75 bde bde bde bde bde bde bfe b85 b81 b8c bec b75 b71 b7c b14 aa1 a9d aa8 a88 a15 a11 a1c a4e a2e a5f a48 a77 aa8 ae6 b15 b53 b8a baa bdb c11 c4b checkSum: c4b
请按任意键继续. . .
程序想要的结果是A0+0+0+12+...+3a ,cksum取低2 byte,应该怎么改?
...全文
相关推荐
一个用来计算烧录资料文件的校验和(CHECKSUM)的程序
计算checksum文件的程序,我们在单片机编程烧录中经常会用到计算目标文件(HEX/BIN))的16位累加和的checksum的工具,这个是我在工作中遇到问题后自己编写的一个,支持NEC、8051、瑞萨、三星等单片机编译软件产生的目标文件。
Windows平台二进制文件深度分析工具wxMEdit3.1实战应用
htmltable {th, td {th {pre {简介:wxMEdit3.1是一款专为Windows系统打造的二进制文件读取与编辑工具,支持对各类二进制数据进行逐字节查看、搜索和修改,广泛应用于网络安全、软件调试、逆向工程和数据恢复等领域。该工具可解析可执行文件、日志、数据块等非文本格式内容,帮助用户深入理解程序底层结构,辅助恶意代码分析、系统日志追踪及编译后机器码研究。配合“01Read”教程文件,用户能够快速掌握其核心功能,提升在二进制数据处理方面的实践能力。
Python基于checksum计算文件是否相同的方法
主要介绍了Python基于checksum计算文件是否相同的方法,涉及Python针对二进制文件的读取与判定技巧,需要的朋友可以参考下
checksum校验和计算工具
checksum校验和计算工具,16进制校验和计算工具,简单实用。
IP/TCP/UDP checksum计算c代码
IP TCP UDP checksum计算c代码,包含checdsum原理说明,以及实现c代码,用于验证网络平时收发包checksum问题



