Если вы не возражаете против создания нового массива вместо изменения существующего, вы можете легко сделать это с помощью Linq:
bytes = bytes.Where((b, i) => (i + 1) % 4 != 0).ToArray();
Для вставки элемента каждые 3 байта, нет способасделать это с помощью встроенных методов расширения.Но вы можете создать свой собственный метод расширения:
public static IEnumerable<T> InsertEvery<T>(this IEnumerable<T> source, T valueToInsert, int frequency)
{
int n = 0;
foreach (var item in source)
{
if ((n + 1) % frequency == 0)
yield return valueToInsert;
yield return item;
n++;
}
}
...
bytes = bytes.InsertEvery(0, 3).ToArray();
Кстати, ваши 2 вопроса относятся к одному и тому же массиву?т.е. вы хотите удалить каждый четвертый байт, а затем вставить 0 каждые 3 байта, все в одном массиве?В этом случае вы действительно хотите заменить каждый четвертый байт на 0, и самый эффективный способ сделать это - использовать цикл for:
for(int i = 3; i < bytes.Length; i += 4)
{
bytes[i] = 0;
}