char *FileBuff = new char[sFileLen];
...//以上sFileLen、 FileBuff 都已成功赋值,不是问题,略去,从下面开始:
char *pPE = FileBuff[0x3C];//取PE头开始地址
char *plen = pPE + 0x50;//指向文件长度
unsigned long FileLen = atol(plen);//获得文件长度,此句取值结果不正确,关键!!!
...//以下略
delete [] FileBuff;
问题:
编译已经顺利通过,运行也没有问题,但 FileLen 的结果却不正确,总是0x0,问题出在哪里?
怎么修改才能使FileLen的值正确取到plen 双字长度的内容?
个人感觉好像是 atol() 函数使用的错误,但不知道用什么函数合适。
这段程序是我编制的一段程序的片段,是要对已读入内存FileBuff的内容进行相关操作。已知plen指向的位置存储的是unsigned long 类型的十六进制数据,而不是字符串。这个unsigned long 类型的数据即是我要提取的所谓“文件长度”FileLen,与sFileLen不是一个意思。
婷婷同学_