在 VB.Net 中,我使用 BinaryReader 打开一个文件。
我需要在文件中找到一些十六进制值,如果找到,它会返回第一个字节的偏移地址。
有可能的?怎么能做到这一点?谢谢
编辑:
我当前的代码:
Private Function findOffset()
Using reader As New BinaryReader(File.Open(filename, FileMode.Open))
' Loop through length of file.
Dim pos As Integer = 0 ' <== THIS IS THE OFFSET
Dim length As Integer = reader.BaseStream.Length
Do While pos < length
' Read the integer.
Dim value As Byte = reader.ReadByte()
If value = CByte(&H41) Then
Return pos
Exit Do
End If
' Add length of integer in bytes to position.
pos += 1
Loop
End Using
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MsgBox(Hex(findOffset()).ToString.PadLeft(6, "0"c))
End Sub
我想做的是:
例如,我打开一个文件,在用十六进制编辑器打开的文件中,我看到有一些十六进制值,41,42,43,44
. 我需要找到该值,然后返回找到它们的偏移地址。
使用我当前的代码它可以工作,但我只能找到 1Byte,而且我需要找到超过 1 个 .. 我可能需要找到 1kb 或更多的数据!
我这样做是为了在一些 bin 文件中找到可用空间。因此,例如我需要 10Byte 的可用空间。那将FF,FF,FF,FF,FF,FF,FF,FF,FF,FF
在一个 Hex heditor 中,我需要找到它并返回第一个空字节的偏移地址。
编辑 2
这里是第一行代码。
Private Function findOffset(query as Byte())
Using reader As New BinaryReader(File.Open(filename, FileMode.Open))
Dim startOffset = 80
Dim length As Integer = reader.BaseStream.Length - startOffset
reader.BaseStream.Position = startOffset
If query.Length <= length Then
...
但不起作用..它告诉我可用空间从十进制偏移量开始00000047
我在这里做错了,我不太明白你的意思
修改“length”变量“length = length - startOffset”