如何替换 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。 当您知道文件的结构更适合使用数据结构来操作其内容时。