I have a file in a byte[], and I need to remove 0x1000 bytes at every x offset (I have a list of offsets). I have some code to do it, but I'm wondering if there is a better way to do it;
private byte[] RemoveHashBlocks(byte[] fileArray, STFSExplorer stfs)
{
    long startOffset = StartingOffset;
    long endOffset = StartingOffset + Size;
    List<long> hashBlockOffsets = new List<long>();
    foreach (xBlockEntry block in stfs._stfsBlockEntry) 
        if (block.IsHashBlock && (block.BlockOffset >= startOffset && block.BlockOffset <= endOffset))
            hashBlockOffsets.Add(block.BlockOffset - (hashBlockOffsets.Count * 0x1000));
    byte[] newFileAray = new byte[fileArray.Length - (hashBlockOffsets.Count * 0x1000)];
    for (int offset = 0; offset < fileArray.Length; offset++)
        if (hashBlockOffsets[0] == offset)
        {
            offset += 0x1000;
            hashBlockOffsets.RemoveAt(0);
        }
        else
            newFileAray[offset] = fileArray[offset];
    return newFileAray;
}
 
     
    