关于读取2进制数据后转换成16进制显示出错的问题
本帖最后由 tianshanfe 于 2013-01-31 12:38:40 编辑 我有一个文件,用winhex打开显示是如下的
4D 5A 90 00 03 00 00 00……………………………………
我现在要读取前面4个16进制数据,我是以2进制方法读取后,再转换成16进制显示出来,不过显示出来的答案有点问题,4D 5A 90 00 这4个没问题能读出来,但是后面怎么还跟着一个"Text"呢?
显示的结果是“4D5A9000Text”
代码如下
int FileHandle;//定义文件句柄
char *DateData;//定义读取指针
DateData= new char[4];
char *OutData;//定义输出指针
OutData= new char[4];
//FileNamePath是文件路径变量,AnsiString格式
FileHandle=FileOpen(FileNamePath,fmOpenReadWrite);
FileRead(FileHandle,DateData,4);
BinToHex(DateData,OutData,4);
ShowMessage(OutData) ;
free(DateData);
DateData = NULL;
free(OutData);
OutData = NULL;
[解决办法]
OutData定义小了,要大到足够装下输出字符串的全部,比如
char OutData[200];
[解决办法]
4个字节试试这个代码:
int FileHandle; //定义文件句柄
long CurData;
//FileNamePath是文件路径变量,AnsiString格式
FileHandle=FileOpen(FileNamePath, fmOpenReadWrite);
FileRead(FileHandle, &CurData, sizeof(CurData));
BinToHex(DateData,CurData,4);
ShowMessage(IntToHex(CurData, 8)) ;
FileClose(FileHandle);
[解决办法]
4个字节试试这个代码:
int FileHandle; //定义文件句柄
long CurData;
//FileNamePath是文件路径变量,AnsiString格式
FileHandle=FileOpen(FileNamePath, fmOpenReadWrite);
FileRead(FileHandle, &CurData, sizeof(CurData));
ShowMessage(IntToHex(CurData, 8)) ;
FileClose(FileHandle);