VC中读取二进制文件,并将二进制文件信息转换为十六进制

mannhello 2009-02-06 09:25:12
最近遇到一个问题:
首先,用C#程序将.bmp图片转换为一个二进制文件(.bin 格式),
其次,我需要在VC中读取这个二进制文件,并把读取出来的二进制文件信息转换为十六进制显示出来,
读取二进制文件程序如下:
f.open("D:\\BinData");
f.seekg(ios::beg);
for(int i=0;i<length;i++)
{
f.get(data[i]);
}
请问如何将读取出来的二进制文件信息转换为十六进制并显示出来,
有哪位高手可以指点一下啊!谢谢了!
...全文
1987 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
JavaAlpha 2009-04-18
  • 打赏
  • 举报
回复
C#中怎么实现啊?
mannhello 2009-02-09
  • 打赏
  • 举报
回复
补充一下:
在MFC中显示在Text中,语句为:
m_DataDisplay.SetWindowText(str);
mannhello 2009-02-09
  • 打赏
  • 举报
回复
谢谢各位,我按照楼上的程序,读取二进制文件,程序没有报错,我想在MFC中把转换后的十六进制显示出来,没有任何反应,不知道哪里搞错了,请各位帮忙看一下;如下程序,
long Filelen;
char* a_pData;
if(fp=fopen("D:\\PicData.bin","r"))
{
fseek(fp,0,SEEK_END); //文件指针到文件尾
Filelen = ftell(fp); //读取文件长度
//分配内存
a_pData= (char*)malloc(Filelen); //按文件长度申请内存空间
//读取文件到分配的内存
fseek(fp,0,SEEK_SET); //文件指针到文件头
fread(a_pData,1,Filelen,fp); //读取文件到申请的内存中
fclose(fp);

CString sResult;
for(int i=0;i <Filelen;i++)
{
CString s=“”;
s.Format("%2.2X ",a_pData[i]);//后面加个空格,把每个字节分开,可以看得清楚些
sResult+=s; //sResult就是要的16进制字符串了
}
}

}
梅文海 2009-02-06
  • 打赏
  • 举报
回复
我正好写过一个
// 转换数据到 16 进制字符表示
// 2007.12.9
CString TranDataToString(byte* a_pData,int a_iLen)
{
CString sResult;
for(int i=0;i<a_iLen;i++){
CString s;
s.Format("%2.2X",a_pData[i]);
sResult+=s;
}
return sResult;
}
如果你不用 MFC 的话可以直接用 sprintf
fleer 2009-02-06
  • 打赏
  • 举报
回复
一楼说的很详细了,读取文件可以这样子
          
long Filelen;
char* a_pData;
if(fp=fopen(Path,"rb"))
{
fseek(fp,0,SEEK_END); //文件指针到文件尾
Filelen = ftell(fp); //读取文件长度
//分配内存
a_pData= (char*)malloc(Filelen); //按文件长度申请内存空间
//读取文件到分配的内存
fseek(fp,0,SEEK_SET); //文件指针到文件头
fread(a_pData,1,Filelen,fp); //读取文件到申请的内存中
fclose(fp);

CString sResult;
for(int i=0;i <a_iLen;i++)
{
CString s=“”;
s.Format("%2.2X ",a_pData[i]);//后面加个空格,把每个字节分开,可以看得清楚些
sResult+=s; //sResult就是要的16进制字符串了
}
}

}
pioneer_public 2009-02-06
  • 打赏
  • 举报
回复
%X

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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