• 5426阅读
  • 6回复

[提问]关于对文件内容进行二进制搜索的问题 [复制链接]

上一主题 下一主题
离线roywillow
 

只看楼主 倒序阅读 楼主  发表于: 2011-01-31
最近遇到了个问题,需要在二进制文件中搜索一段二进制数据。我所能想到的方法是将这个文件完全读入QByteArray,然后利用QByteArray或者它的matcher的功能进行搜索。
但是这种方法的问题是会吃掉一定的内存空间,虽然我处理的文件不是很大(最大也就16M吧),但是这种吃内存的方法感觉很不好。
所以请问有没有什么比较优化的方法?我暂时没在QFile和QDataStream中发现这方面的东西,其他的类有没有实现这种功能的?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jdwx

只看该作者 1楼 发表于: 2011-01-31
可以这样:一次(Seek)增加一个地址,读出N个字节用于比较(和那段要比较的二进制数据一样长)。
[ 此帖被jdwx在2011-01-31 15:48重新编辑 ]
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线roywillow

只看该作者 2楼 发表于: 2011-01-31
回 1楼(jdwx) 的帖子
不过这种方法好像效率不是很高吧……
难不成需要我自己再去研究搜索算法……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线wter27
只看该作者 3楼 发表于: 2011-01-31
回 2楼(roywillow) 的帖子
我觉的读下C语言的数据结构比较好,里面好象弄了不少算法。编程这东西如果没有好的数学思路估计难搞。
离线jdwx

只看该作者 4楼 发表于: 2011-02-01
其实像在文件内搜索几乎没什么简便方法,毕竟要搜遍整个文件才知道结果。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线jdwx

只看该作者 5楼 发表于: 2011-02-01
多说两句:我以前用MFC做过一个程序就是把剪切板上的文本分解,放到一个类里再把类放进链表,方案一:在内存里操作,方案二:临时文件,分解方法一样。结果可是差别很大,竟然是临时文件快的多,完全没有停顿,内存操作停顿明显大概有两秒,出乎意料!
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线zjfshowtime
只看该作者 6楼 发表于: 2011-04-22
貌似就要一个一个数据来匹配吧,首先是第一个,其次下一个来比较判断是不是你要找的数据,
快速回复
限100 字节
 
上一个 下一个