Удаление произвольного кол-ва байт в конце файла

Имеется процедура (c#) извлечения файлов из большого контейнера. Кроме самих файлов в этом контейнере нет никакой информации. Программа находит определённые 4 байта по всему массиву и записывает их смещения в отдельный массив int. Реализовано следующим образом:

public static List<int> IndexOfSequence(this byte[] buffer, byte[] pattern, int startIndex)
        {
            List<int> positions = new List<int>();
            int i = Array.IndexOf<byte>(buffer, pattern[0], startIndex);
            while (i >= 0 && i <= buffer.Length - pattern.Length)
            {
                byte[] segment = new byte[pattern.Length];
                Buffer.BlockCopy(buffer, i, segment, 0, pattern.Length);
                if (segment.SequenceEqual<byte>(pattern))
                    positions.Add(i);
                i = Array.IndexOf<byte>(buffer, pattern[0], i + 1);
            }
            return positions;
        }

Проблема заключается в том, что у каждого этого файла конец смещён с помощью определённого кол-ва байт так, чтобы смещение следующего файла начиналось с начального байта в шестнадцатеричной системе исчисления. Например, имеется файл размером 0x23BC92 (2342034 байт), а следующий за ним файл в контейнере имеет смещение 0x23BCA0 (2342048 байт). Между этими файлами стоит 0x0E (14 байт) "заглушки". Как раз размер этой заглушки мне и нужно узнать, чтобы удалить её с конца извлечённого файла (она имеет разный размер, но всегда один и тот же байт).

Кроме того, у меня есть метод, который может создавать такие заглушки (деление по модулю), может чем-то поможет:

(0x10 - offset % 0x10) + offset;

Ответы (0 шт):