下面的代码搜索文件以查看模式是否匹配并将文件偏移量存储在“result”变量中。然后我有一个for循环通过'result'变量来循环显示工作正常的偏移...直到,我还有一些代码来读取每个偏移量的文件内容,并对每个读入和在控制台中输出它。
由于某种原因,每个循环只输出第一个计算,而不是继续执行所有其他偏移。
为什么每个循环在第一个偏移处停止的任何帮助?
提前致谢
byte[] pattern = 00 00 00 08 00;
byte[] file = "C:\\123.cfg";
var result = Enumerable.Range(0, file.Length - pattern.Length + 1)
.Where(i => pattern.Select((b, j) => new { j, b })
.All(p => file[i + p.j] == p.b))
.Select(i => i + pattern.Length - 1);
foreach (var value in result) {
int startaddress1 = value + 1;
int EndAddress1 = value + 4;
int startaddress2 = EndAddressLong + 1;
int EndAddress2 = EndAddressLong + 4;
MyGlobals.123_filepath = "C:\\123.cfg";
///////////////////////////// Read in the selected //////////////
BinaryReader br = new BinaryReader(File.OpenRead(MyGlobals.123_filepath),
System.Text.Encoding.BigEndianUnicode);
for (int i = startaddress1; i <= EndAddress2; i++)
{
br.BaseStream.Position = i;
MyGlobals.Hexbytes += br.ReadByte().ToString("X2") + ",";
}
}
答案 0 :(得分:2)
我认为您的问题出在Console.ReadKey()
,您需要按一个键才能继续foreach
循环
答案 1 :(得分:0)
只有一个原因可能导致循环在一次迭代后退出: