如何替换 VB.NET 中的字节?
How to replace bytes in VB.NET?
我有两个字符串:
Dim Original_Hex_Bytes as string = "616572646E61"
Dim Patched_Hex_Bytes as string = "616E64726561"
然后我有一个二进制文件,我需要搜索 Original_Hex_Bytes 并将它们替换为 Patched_Hex_Bytes;我不知道开始写入新字节的偏移量:(
我该怎么做?
如果需要,我也知道如何以字节为单位转换十六进制字符串,我使用这个:
Private Function Hex_To_Bytes(ByVal strinput As String) As Byte()
Dim i As Integer = 0
Dim x As Integer = 0
Dim bytes(strinput.Length / 2) As Byte
Do While (strinput.Length > i + 1)
Dim lngDecimal As Long = Convert.ToInt32(strinput.Substring(i, 2), 16)
bytes(x) = Convert.ToByte(lngDecimal)
i += 2
x += 1
Loop
Return bytes
End Function
您可以使用 BinaryReader 和 BinaryWriter 类 来实现这一点。
但在这种情况下,由于您不知道文件结构,需要读取整个文件并扫描它以搜索字节数组,使用 ASCII 字符串会更容易,如 aerdna 和 andrea。
当您知道文件的结构更适合使用数据结构来操作其内容时。
我有两个字符串:
Dim Original_Hex_Bytes as string = "616572646E61"
Dim Patched_Hex_Bytes as string = "616E64726561"
然后我有一个二进制文件,我需要搜索 Original_Hex_Bytes 并将它们替换为 Patched_Hex_Bytes;我不知道开始写入新字节的偏移量:(
我该怎么做?
如果需要,我也知道如何以字节为单位转换十六进制字符串,我使用这个:
Private Function Hex_To_Bytes(ByVal strinput As String) As Byte()
Dim i As Integer = 0
Dim x As Integer = 0
Dim bytes(strinput.Length / 2) As Byte
Do While (strinput.Length > i + 1)
Dim lngDecimal As Long = Convert.ToInt32(strinput.Substring(i, 2), 16)
bytes(x) = Convert.ToByte(lngDecimal)
i += 2
x += 1
Loop
Return bytes
End Function
您可以使用 BinaryReader 和 BinaryWriter 类 来实现这一点。 但在这种情况下,由于您不知道文件结构,需要读取整个文件并扫描它以搜索字节数组,使用 ASCII 字符串会更容易,如 aerdna 和 andrea。 当您知道文件的结构更适合使用数据结构来操作其内容时。