工作需要,现在需要一个能够计算文件CheckSum的工具。
要求:
1。能够计算bin、hex和mot文件。
2。结果为8位的CheckSum。
首先处理bin文件,这个文件格式最简单,纯粹的二进制数据,不涉及到地址信息,所以只需要将其
从头到尾加起来就行了。
需要注意的地方是如果Flash的大小为4MB,bin的实际大小只有3MB大小,剩下的1MB大小的空间填
充的不是00而是FF。
设计思想就是首先开辟指定大小空间的数组,全部填充为0xFF,再将bin文件读入的数据放入数组
中,这样使得最后数组中的数据就为实际的Flash中的数据。
再计算该数组的CheckSum即可。
void CCheckSum8BitDlg::OnCheckSum()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CFile fileRead;
CString checkSum = "";
int check_sum_result = 0;
int nFileLen = 0;
unsigned int i = 0;
unsigned char *data = new unsigned char[FlashSize];
memset(data,0xFF,FlashSize);
fileRead.Open(inSrc, CFile::modeRead);
nFileLen = fileRead.GetLength();
fileRead.Read(data,nFileLen);
for(i = 0; i < FlashSize; i++)
{
check_sum_result += data[i];
}
checkSum.Format("%0x",check_sum_result);
SetDlgItemText(IDC_EDIT2,checkSum);
delete(data);
fileRead.Close();
}
转载于:https://blog.51cto.com/bignqi/1348370
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/109939.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...