首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

关于读取2进制数据后转换成16进制显示出错的有关问题

2013-02-18 
关于读取2进制数据后转换成16进制显示出错的问题本帖最后由 tianshanfe 于 2013-01-31 12:38:40 编辑我有

关于读取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);

热点排行