在文件中搜索十六进制代码

时间:2013-10-26 17:48:38

标签: c# file search hex

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

 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!");
    }
}

}

我在网上到处查找并没有找到任何有用的内容,是否可以搜索十六进制代码并使用偏移量输出?

EDIT1:

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

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

1 个答案:

答案 0 :(得分: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();