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

tianshanfe 2013-01-31 11:51:15
我有一个文件,用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;
...全文
1209 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
魔术猫 2013-01-31
  • 打赏
  • 举报
回复
4个字节试试这个代码: int FileHandle; //定义文件句柄 long CurData; //FileNamePath是文件路径变量,AnsiString格式 FileHandle=FileOpen(FileNamePath, fmOpenReadWrite); FileRead(FileHandle, &CurData, sizeof(CurData)); ShowMessage(IntToHex(CurData, 8)) ; FileClose(FileHandle);
魔术猫 2013-01-31
  • 打赏
  • 举报
回复
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);
dataxdata 2013-01-31
  • 打赏
  • 举报
回复
OutData定义小了,要大到足够装下输出字符串的全部,比如 char OutData[200];

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧