Удалить или пропустить ненужные байты - C#
Формулировка задачи:
необходимо удалить из файла определенные байты (например, 0х20 0х7A 0хB3).
подскажите пожалуйста как лучше это сделать? загнать файл в массив байт и потом записать этот массив в новый файл, пропуская ненужные байты? как это реализовать?
причем данная комбинация ненужных байт встречается в файле не один, а несколько раз
Решение задачи: «Удалить или пропустить ненужные байты»
textual
Листинг программы
const int BUFFER_SIZE = 100; var seq = new[] { 0x20, 0x7A, 0xB3 }; using (var sourceStream = new FileStream(@"path to file", FileMode.Open, FileAccess.Read)) using (var resultStream = new FileStream(@"path to file", FileMode.Create, FileAccess.Write)) { var bytes = new byte[BUFFER_SIZE]; var result = new byte[2 * BUFFER_SIZE]; var temp = new List<byte>(); var resultCount = 0; while (true) { int count = sourceStream.Read(bytes, 0, bytes.Length); if (count == 0) break; resultCount = 0; for (var i = 0; i < count; i++) { if (bytes[i] == seq[temp.Count]) { temp.Add(bytes[i]); if (temp.Count == seq.Length) { temp.Clear(); } } else { foreach (byte value in temp) { result[resultCount++] = value; } temp.Clear(); result[resultCount++] = bytes[i]; } } resultStream.Write(result, 0, resultCount); } if (temp.Count > 0) { resultCount = 0; foreach (byte value in temp) { result[resultCount++] = value; } resultStream.Write(result, 0, resultCount); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д