| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 251 人关注过本帖
标题:VB通过二进制收索替换
只看楼主 收藏
sjf1130
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-3-10
结帖率:0
  已结贴   问题点数:20  回复次数:3   
VB通过二进制收索替换


各位大神,附件的图我是用FlexHEX打开的一个未知格式文件,我想把里面的所有的02 02 02 替换成 03 05 07,有没有什么办法。
附件: 您没有浏览附件的权限,请 登录注册
2018-03-10 17:53
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:206
帖 子:4185
专家分:25726
注 册:2008-10-15
  得分:10 
使用二进制模式打开二个文件,一种为源文件,一个为临时文件,建议放到一个目录下。

使用循环一个字节一个字节的读。
每读到一个字节,判断当前值日否等于 02 。
if tmpbyte=&H02 then
   计数=计数+1
   if 计数=3 then
       写入 &H03
       写入 &H05
       写入 &H07
       计数=0
    end if
else
   for i=1 to 计数
      写入 &H02
   next i
      计数=0
      写入 tmpbyte
end if

大体上就是这样的流程。
如果不是连续相同的02,那么比较用的数据放到数组里,
然后比较时,根据计数来调用下标进行比较。

授人于鱼,不如授人于渔
早已停用QQ了
2018-03-10 19:28
wds1
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:20
帖 子:212
专家分:1148
注 册:2016-3-10
  得分:10 
其实单纯的替换不建议用程序,直接在UE替换就可以。
如果批量处理,用二进制文件方式:
  Open f1_cmd.FileName For Binary As #1 '二进制打开
   Get #1, t0, t1't0表示要读取的字节数,t1表示要读取到的变量

你可以按循环单字节读取,也可以一次性读取。

2018-03-11 10:02
枫林火山
Rank: 2
来 自:XX县高一学生一只
等 级:论坛游民
威 望:3
帖 子:14
专家分:96
注 册:2017-2-10
  得分:0 
查找可以使用instr查找byte数组。不需要手写for查找。文件不大考虑一次读进内存。

大丈夫久居人下,生死等闲,顺风则行,逆风则泊?
我欲上九天揽月,痛饮狂欢,宁斗而败,不屈而活!
一朝得势自比天,挥斥方遒,有何罡碍,有何不可?
我志在万世功业,名扬天下,宁鸣而生,不默而死!
2018-03-19 23:20







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.131745 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved