VB 如何用16进制替换指定的字节
求助 VB 怎么用16进制替换指定的字节
Dim bit() As Byte, l As Long
Open "c:\1.dll" For Binary As #1
ReDim bit(LOF(1)) As Byte
Get 1, 1, bit
Close 1
'查找并替换写入到数组
For l = 0 To UBound(bit) - 10
If bit(l) = &H1 And bit(l + 1) = &H23 And bit(l + 2) = &HFF And bit(l + 3) = &HFF And bit(l + 4) = &H34 Then
bit(l + 1) = CLng("&H" & "FF")
MsgBox "1"
End If
Exit For
Next
'写入到文件
Open "c:\1.dll" For Binary As #1
Put 1, 1, bit
Close 1
End Sub
这个只能替换开始的位置
怎么可以在任意位置符合的条件就替换
------解决思路----------------------
对啊,我发给你的那代码也没有exit for啊
另外 UBound(bit) - 10应该是UBound(bit) - 3,别替换漏了
------解决思路----------------------
你要的是比较连续5个字节,所以应该是:
For l = 0 To UBound(bit) - 4
因为超过 UBound(bit) - 4 后所剩的字节个数已经不足5个啦,所以没有必要比较了
------解决思路----------------------
Dim bit() As Byte, l As Long
Open "c:\1.dll" For Binary As #1
ReDim bit(LOF(1)) As Byte
Get 1, 1, bit
Close 1
'查找并替换写入到数组
For l = 0 To UBound(bit) - 10
If bit(l) = &H1 And bit(l + 1) = &H23 And bit(l + 2) = &HFF And bit(l + 3) = &HFF And bit(l + 4) = &H34 Then
bit(l + 1) = CLng("&H" & "FF")
MsgBox "1"
End If
Exit For
Next
'写入到文件
Open "c:\1.dll" For Binary As #1
Put 1, 1, bit
Close 1
End Sub
这个只能替换开始的位置
怎么可以在任意位置符合的条件就替换
------解决思路----------------------
对啊,我发给你的那代码也没有exit for啊
另外 UBound(bit) - 10应该是UBound(bit) - 3,别替换漏了
------解决思路----------------------
你要的是比较连续5个字节,所以应该是:
For l = 0 To UBound(bit) - 4
因为超过 UBound(bit) - 4 后所剩的字节个数已经不足5个啦,所以没有必要比较了
------解决思路----------------------
For l = 0 To UBound(bit) - 4
If bit(l) = &H1 And bit(l + 1) = &H23 And bit(l + 2) = &HFF And bit(l + 3) = &HFF And bit(l + 4) = &H34 Then
bit(l + 1) = CLng("&H" & "FF")
I = I + 4
End If
Next