在VB.Net我打開與BinaryReader在文件..VB.Net獲取偏移地址
我需要找到一些的十六進制值的文件,如果他們被發現,它返回第一個的偏移地址字節..
這是可能的嗎?怎麼能做到這一點?謝謝
編輯:
我當前的代碼:
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的可用空間。那在Hex heditor中將會是FF,FF,FF,FF,FF,FF,FF,FF,FF,FF
,我需要找到它並返回第一個空字節的偏移地址。
編輯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
我做錯了什麼在這裏,我不明白你也通過
是什麼意思修改 「長度」 可變 「長度=長度 - 開始偏移」
好吧,我設法讓它工作,因爲我需要。現在的問題是,我需要找到多個字節..我編輯我的帖子與當前的代碼和我想要做的例子。 – Fr0z3n
@DjRikyx - 在流內搜索數組的值是多一點工作,檢查我的編輯 –
我正在測試它,但似乎不工作。但我認爲我做錯了什麼。例如..當我使用該功能,'查詢'必須是什麼格式?對不起,但我是VB.net的初學者 – Fr0z3n