我以二进制方式读一个文件,先遍历整个文件求校验和,然后我要重新回到文件开头再来
读取文件数据,也就是将文件指针置于文件头,可是运行时不是这样。
ifstream filein(strFileDir, ios::in | ios::binary);
//校验和
int iVerify = 0;
while (!filein.eof())
{
char cByte = NULL;
filein.read(&cByte, sizeof(char));
iVerify+=(int)cByte;
}
iVerify = (iVerify ^ 0xffffffff) + 1;
//读取文件
char szBuff[FILE_DATA_LEN];
filein.seekg(0,ios::beg); //置文件指针到文件头
ios::pos_type iTemp = filein.tellg();
ios::pos_type iPos = filein.beg;
int iNum = 0; //帧序号
while (!filein.eof())
{
memset(szBuff, 0, sizeof szBuff);
filein.read(szBuff, sizeof szBuff);
int iLen = filein.tellg() - iPos;
iPos = filein.tellg();
if (YZNETSDK1203::YZ_SysUpdate1203(g_lLoginID, szBuff, iLen, iNum, iVersion,iVerify) != 0)
{
AfxMessageBox(TEXT("系统升级失败"));
break;
}
iNum++;
}
求指导