Question: I need to remove every fourth byte in the `byte[]` I have. 
Is there some built-in function that could help me to do that or do I have to loop over the array picking and moving each byte one by one?

Similarly what what if I need to place 0 after every three bytes from `byte[]` is there a way to do this faster than manually?

Answer: 
Coding it by hand is likely to be very fast, and the bottleneck is the cpu-to-memory bandwidth.

One core can easily max out the memory bandwidth on a modern machine, so multithreading is unlikely to help since the work done is very straightforward (a single read or write per 4th element.)
If you don't mind creating a new array instead of modifying the existing one, you can easily do it with Linq:

```
bytes = bytes.Where((b, i) => (i + 1) % 4 != 0).ToArray();

```

To insert an item every 3 bytes, there is no way to do it using built-in extension methods. But you can create your own extension method:

```
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();

```

By the way, are your 2 questions related to the same array ? i.e. you want to remove every fourth byte, then insert 0 every 3 bytes, all in the same array ? In that case, what you really want to do is to replace every fourth byte with 0, and the most efficient way to do it is to use a for loop:

```
for(int i = 3; i < bytes.Length; i += 4)
{
    bytes[i] = 0;
}

```