注册 登录
编程论坛 VB6论坛

VB通过二进制收索替换

sjf1130 发布于 2018-03-10 17:53, 1864 次点击
只有本站会员才能查看附件,请 登录


各位大神,附件的图我是用FlexHEX打开的一个未知格式文件,我想把里面的所有的02 02 02 替换成 03 05 07,有没有什么办法。
3 回复
#2
风吹过b2018-03-10 19:28
使用二进制模式打开二个文件,一种为源文件,一个为临时文件,建议放到一个目录下。

使用循环一个字节一个字节的读。
每读到一个字节,判断当前值日否等于 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,那么比较用的数据放到数组里,
然后比较时,根据计数来调用下标进行比较。
#3
wds12018-03-11 10:02
其实单纯的替换不建议用程序,直接在UE替换就可以。
如果批量处理,用二进制文件方式:
  Open f1_cmd.FileName For Binary As #1 '二进制打开
   Get #1, t0, t1't0表示要读取的字节数,t1表示要读取到的变量

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

#4
枫林火山2018-03-19 23:20
查找可以使用instr查找byte数组。不需要手写for查找。文件不大考虑一次读进内存。
1