我想创建一个程序,允许用户在文件中搜索特定的十六进制代码,输出将是偏移量或未找到。 我到目前为止的代码是:
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
答案 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();