永发信息网

VB 在二进制文件中找到指定字符串并替换

答案:6  悬赏:60  手机版
解决时间 2021-01-07 21:47
VB 在二进制文件中找到指定字符串并替换
最佳答案
VB的二进制文件查找我做过
先要把文件全部读进一个byte数组,以下是我贴的代码,使用已久,效率很高

==============代码================
Public Function FindByteArrayInBinaryFileBuffer(dt() As Byte, ByteArray() As Byte) As Long
Dim curLoc As Long, cnt As Long, ReadBud As Byte, cmpByte As Byte, i As Long
cmpByte = ByteArray(0)
For i = LBound(dt) To UBound(dt)
If dt(i) = cmpByte Then
For j = 1 To UBound(ByteArray)
If dt(i + j) <> ByteArray(j) Then GoTo a
Next
FindByteArrayInBinaryFileBuffer = i
Exit Function
End If
a:
Next
End Function

Private Sub Command1_Click()
Dim fileBuf() As Byte '文件缓冲区
Dim searchSgn() As Byte '要查找的标识
Dim Pos As Long '标识的位置
searchSgn() = StrConv("521", vbFromUnicode) '如果是字符串,要稍微转换一下

'读入数组
Open "I:\My Documents\Visual Basic\Editing\PE Patcher\asm.txt" For Binary As #1
ReDim fileBuf(0 To LOF(1) - 1) As Byte
Get #1, , fileBuf

Pos = FindByteArrayInBinaryFileBuffer(fileBuf, searchSgn)
If Pos > 0 Then
searchSgn() = "123"
Put #1, Pos, searchSgn '写入数据
End If
Close #1
End Sub
=============代码==================

把文件内容放入byte数组查找,虽然开销点内存,不过速度相当快
如果觉得回答得好麻烦再加点分行吗?
全部回答
Pos = FindByteArrayInBinaryFileBuffer(fileBuf, searchSgn)
等同于VB自带的函数
Pos = InStrB(fileBuf, searchSgn) -1
C:\Documents and Settings\Administrator\桌面\asd.exe里是快捷方式,还是文件本身?
如果是文件本身,应该可以.但一般应该不是
首先EXE文件不是二进制文件,二进制文件的扩展名为。BIN
再者,你那个521已经被编译,无法更改
呵呵,客户端是要和服务端通讯的...
你客户端写好了,还非常好...
我真不知道你这客户端怎么写的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中国福利彩票(红星西街)地址在哪,我要去那里
山上的温度比水里的温度哪里高?
WEC智能矿机的直推收益怎么理解?
别来无恙中的"来"是什么意思
拜托我银行朋友帮我查征信,他说这几天我被贷
人们每天都在做哪些善事
麻将胡牌的规则是什么?
永丰县的灵华山在哪?
耕升gtx960g魂和960关羽4g区别
信阳博尔登森林公园现在的门票是多少。过两天
1040000m㎡等于多少平方米
济南——青岛——海阳走跨海大桥怎么走?
在绾青丝一书中出现的所有歌曲?
26点5-4x=8求解
《阿龙正传》txt全集下载
推荐资讯
653130开头的身份证是哪里
郑州的手机批发市场在哪里
中抓圈名词解释
预定民宿的软件爱彼迎Airbnb靠谱么,第一次用
怎样看懂移动筹码?(图)
PES2011大师联赛如何赚钱快?
一运行skype电脑就蓝屏怎么办
亲们好,我是十堰人,25岁了,朋友都说我口臭
阿有人晓得浏河天熙苑里面有没有房子??
吃过被压扁的饭会不会变笨
请用繁体字发一段话,连贯的最好
下列食品中不得添加任何食品添加剂的品种是:_
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?