0
我有一个文件在byte[]
,我需要删除0x1000
字节每x
偏移量(我有一个偏移量列表)。我有一些代码可以做到,但我想知道是否有更好的方法来做到这一点;从字节数组中删除范围
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;
}
RemoveAt for List或数组重新定位它们。而不是从阵列中删除某些东西来创建一个新的,只复制那些需要的值。 – 2012-07-08 14:07:19
使用LINQ - 'array.Skip(0x1000).Take(N).ToArray();' - from:http://stackoverflow.com/questions/943635/c-sharp-arrays-getting-a-sub-array -from-AN-现有阵列 – Tisho 2012-07-08 14:11:32