Я пишу программу, которая читает файлы .exe и сохраняет их шестнадцатеричные значения в массиве байтов для сравнения с массивом, содержащим ряд значений. (Как очень простой антивирусу)Поиск ReadAllBytes для определенных значений
byte[] buffer = File.ReadAllBytes(currentDirectoryContents[j]);
я тогда использовал BitConverter для создания одной строки из этих значений
string hex = BitConverter.ToString(buffer);
Следующим шагом является поиск этой строки для ряда значений (определений) и положительный результат для матча. Здесь я столкнулся с проблемами. Мои определения шестнадцатиричного значение, но создан и сохранен в качестве блокнота defintions.xyz
string[] definitions = File.ReadAllLines(@"C:\definitions.xyz");
Я пытался читать их в массив строк и сравнить элементы определения массива со строкой шестнадцатеричного
bool[] test = new bool[currentDirectoryContents.Length];
test[j] = hex.Contains(definitions[i]);
Это раздел из урока домашней работы, поэтому я не размещаю весь свой код для программы. Я не использовал C# до прошлой пятницы, поэтому, скорее всего, делаю глупые ошибки на этом этапе.
Любой совет высоко ценится :)
Можете ли вы разместить содержание или раздел своего файла определений, пожалуйста. –
И в чем проблема? – GazTheDestroyer
Что вы думаете? Еще одна важная вещь: преобразование байтового массива в строку для дальнейшего шестнадцатеричного сравнения действительно неэффективно. Вы должны сравнивать байты с байтами и ** не ** использовать строки здесь. – ken2k