📄 check_sum.cpp
字号:
#include<stdlib.h>
#include<stdio.h>
void main(int argc, char* argv[])
{
//定义初始化变量
unsigned char ch;//保存读入的数据
int count=0;//读入的数据的数目
unsigned long int checksum,sum=0;//checksum用来保存校验和
FILE *fp;
//打开文件argv[1]
if((fp=fopen(argv[1],"r"))==NULL)//如果打开文件出错,则报错退出
{
printf("can not open this file\n");
exit(1);
}
//从打开的文件中读取字符,并进行数据处理
while(1)//判断是否读到了文件尾
{
ch=fgetc(fp);
if(ch==0xff)
break;
//以下为数据处理过程,将奇数字节累加到sum的高8位,偶数字节累加到sum的低8位。
//在累加到高8位时乘以它的权值256。
if(count%2==0)
{
sum=sum+int(ch)*256;
}
else
{
sum=sum+int(ch);
}
printf("%x--%lx ",ch,sum);
if(count%2==1)
printf("\n");
count++;
}
checksum=sum+(sum>>16);//将sum的高16位加到低16位上赋给checksum.
checksum=~checksum;//取反
checksum=(checksum)&(0xffff);//清空checksum的高16位
printf("\nsum:%lx,checksum:%lx\n",sum,checksum);
printf("argv=%s\n",argv[1]);
fclose(fp); //关闭文件
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -