标题:VB通过二进制收索替换
只看楼主
sjf1130
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-3-10
结帖率:0
已结贴  问题点数:20 回复次数:3 
VB通过二进制收索替换
新建位图图像.rar (105.62 KB)


各位大神,附件的图我是用FlexHEX打开的一个未知格式文件,我想把里面的所有的02 02 02 替换成 03 05 07,有没有什么办法。
搜索更多相关主题的帖子: VB 二进制 替换 文件 办法 
2018-03-10 17:53
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册: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: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册: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
帖 子:15
专家分:96
注 册:2017-2-10
得分:0 
查找可以使用instr查找byte数组。不需要手写for查找。文件不大考虑一次读进内存。

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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485142-1-1.html




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

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