关于快速显示二进制文件内容到MFC编辑框中
自己做了一个小程序,是把一个二进制文件内容显示到对话框中的编辑框中,就像一些十六进制编辑工具一样,我的思路是将文件内容存到一个动态创建的byte数组中,然后将数组的每一个...
自己做了一个小程序,是把一个二进制文件内容显示到对话框中的编辑框中,就像一些十六进制编辑工具一样,我的思路是将文件内容存到一个动态创建的byte数组中,然后将数组的每一个元素格式化成十六进制后加到编辑框中,由于读取到的一个字节有可能是小于10(十六进制),如果不对读取到的一个数A格式化成0A那就不是我的要求了,比如我要显示成的格式为:
11 01 02 03 AA FF
而不是11 1 2 3 AA FF
这问题就出来了,如果我对byte数组这样进行处理的话,要读取一个不太长的文件却要运行很长的时间,以致MFC程序无法响应了,请问大家,有没有什么好的办法来实现这样的功能?Notepad++读取二进制文件并显示速度很快是怎么做到的呢。
经过尝试,用sprintf可以格式化成我的要求,同时为读取处理过程创建一个线程,在读取处理结束后给编辑框发送消息PostMessage,大大加快了我的运行速度 展开
11 01 02 03 AA FF
而不是11 1 2 3 AA FF
这问题就出来了,如果我对byte数组这样进行处理的话,要读取一个不太长的文件却要运行很长的时间,以致MFC程序无法响应了,请问大家,有没有什么好的办法来实现这样的功能?Notepad++读取二进制文件并显示速度很快是怎么做到的呢。
经过尝试,用sprintf可以格式化成我的要求,同时为读取处理过程创建一个线程,在读取处理结束后给编辑框发送消息PostMessage,大大加快了我的运行速度 展开
1个回答
展开全部
读到的一个字节分成高4位和低4位(用移位运算快点),对每4位做输出,而不是考虑怎么去处理一个字节
将你的读取放在一个独立的线程里,和UI线程分开,这样可以不至于无响应
将你的读取放在一个独立的线程里,和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";
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询