如何从字节数组中删除字节

5

我有一个程序,其中有一个大小不定但大约为2300字节的字节数组。我想创建一个函数,它可以创建一个新的字节数组,并删除我传递给它的所有字节。例如:

byte[] NewArray = RemoveBytes(OldArray,0xFF);

我需要一个函数,可以删除等于0xFF的任何字节,并返回一个新的字节数组。
希望得到帮助。顺便提一下,我使用的是C#。

如果大小变化,它更像是一个集合而不是数组。但我理解需要使用数组来模拟集合以便与旧的API一起使用。 - Joel Coehoorn
2个回答

15
您可以使用“Where”扩展方法来过滤数组:

Where 扩展方法用于筛选数组:

byte[] newArray = oldArray.Where(b => b != 0xff).ToArray();

或者如果你想要移除多个元素,你可以使用Except扩展方法:

byte[] newArray = oldArray.Except(new byte[] { 0xff, 0xaa }).ToArray();

简洁明了。非常有帮助。 - joelc
注意,Except 是集合差异。因此,每个剩余的字节只返回一次。在我的情况下,printData.Except(bytesToRemove).ToArray() 没有得到预期的输出,而 printData.Where(e => bytesToRemove.All(b => b != e)).ToArray() 可以正常工作。 - Christian Gollhardt

-1

分解问题:

您能编写代码将一个数组复制到另一个数组中吗?

您能编写条件语句吗?

您能分配一个新的数组吗?

如果你在其中一个方面卡住了,那么就具体地提出来问。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接