关于快速显示二进制文件内容到MFC编辑框中

自己做了一个小程序,是把一个二进制文件内容显示到对话框中的编辑框中,就像一些十六进制编辑工具一样,我的思路是将文件内容存到一个动态创建的byte数组中,然后将数组的每一个... 自己做了一个小程序,是把一个二进制文件内容显示到对话框中的编辑框中,就像一些十六进制编辑工具一样,我的思路是将文件内容存到一个动态创建的byte数组中,然后将数组的每一个元素格式化成十六进制后加到编辑框中,由于读取到的一个字节有可能是小于10(十六进制),如果不对读取到的一个数A格式化成0A那就不是我的要求了,比如我要显示成的格式为:
11 01 02 03 AA FF
而不是11 1 2 3 AA FF
这问题就出来了,如果我对byte数组这样进行处理的话,要读取一个不太长的文件却要运行很长的时间,以致MFC程序无法响应了,请问大家,有没有什么好的办法来实现这样的功能?Notepad++读取二进制文件并显示速度很快是怎么做到的呢。
经过尝试,用sprintf可以格式化成我的要求,同时为读取处理过程创建一个线程,在读取处理结束后给编辑框发送消息PostMessage,大大加快了我的运行速度
展开
 我来答
dufei414
2011-03-26 · TA获得超过289个赞
知道小有建树答主
回答量:322
采纳率:0%
帮助的人:274万
展开全部
读到的一个字节分成高4位和低4位(用移位运算快点),对每4位做输出,而不是考虑怎么去处理一个字节

将你的读取放在一个独立的线程里,和UI线程分开,这样可以不至于无响应
追问
按照你的方法,下面是关键代码,可运行时间还有有点长,如图片
for(int i=0;i>4;
if(tempbyte==0)
temp="0";
else
temp.Format("%X",tempbyte);
m_data+=temp;tempbyte=0x0f&data[i];
if(tempbyte==0)
temp="0";
else
temp.Format("%X",tempbyte);
temp+=" ";m_data+=temp;
if((i+1)%30==0) m_data+="\r\n";
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式