-2

我想制作一个程序,允许用户在文件中搜索特定的十六进制代码,输出将是偏移量或未找到。我到目前为止的代码是:

 namespace search
 {
class Program
{
    static void Main(string[] args)
    {
        System.IO.BinaryWriter bw = new BinaryWriter(File.OpenWrite("C:\\1.txt"));
        bw.BaseStream.Position = 3;
        bw.Write((byte)0x01);
        bw.Close();
        Console.WriteLine("Wrote the byte 01 at offset 3!");
    }
}

}

我在网上到处找,没有发现任何有用的东西,是否可以搜索十六进制代码并输出带有偏移量的输出?

编辑1:

假设我们有这个文件 1.txt 并且在这个偏移量 0x1300 我们有这个十六进制代码 0120 / 0x01 0x20 /“0120”(我不知道如何写它)。打开程序后,它会通过 console.readline 询问您要搜索的十六进制代码,输出将为 0x1300

EDIT2:我的问题类似于这个 VB.Net Get Offset Address 并且它有一个解决方案,但在 vb.net

4

1 回答 1

0

这使用 BinaryReader 来查找您写入文件的字节。

//Write the byte
BinaryWriter bw = new BinaryWriter(File.OpenWrite("1.txt"));
bw.BaseStream.Position = 3;
bw.Write((byte)0x01);
bw.Close();
Console.WriteLine("Wrote the byte 01 at offset 3!");

//Find the byte
BinaryReader br = new BinaryReader(File.OpenRead("1.txt"));
for (int i = 0; i <= br.BaseStream.Length; i++)
{
     if (br.BaseStream.ReadByte() == (byte)0x01)
     {
          Console.WriteLine("Found the byte 01 at offset " + i);
          break;
     }
}
br.Close();
于 2013-10-26T18:16:38.747 回答