如何验证读取二进制文件数据的正确性?
大家好,本人是菜鸟,有以下疑问,
CString szFileName = fileDlg.GetNextPathName(pos);
char *pBuf;
CFile file;
file.Open(szFileName,CFile::modeRead|CFile::typeBinary);
DWORD dwFileLen;
dwFileLen=file.GetLength();
pBuf=new char[dwFileLen+1];
pBuf[dwFileLen]=0;
file.Read(pBuf,dwFileLen);
int temp = atoi(pBuf);
file.Close();
CString tempstring;
tempstring.Format( "%d ",temp);
MessageBox(pBuf);
MessageBox(tempstring);
1.二进制文件以文本方式打开是乱码,读取后用MessageBox显示的和文本是一样,也是乱码,可我要读取的是灰度值,应该是数字才对啊。
2.如何显示这些数字,为什么temp总是0,希望老手们帮忙啊
[解决办法]
int temp = atoi(pBuf);
-> >
memcpy(&temp, pBuf, 4)
[解决办法]
你是以二进制方式打开的文件,读取出来的是数值类型,而不是字符类型,所以用atoi是行不通的。
直接进行内存复制操作