【问题标题】:How to remove bytes from a byte array如何从字节数组中删除字节
【发布时间】:2010-10-18 00:58:05
【问题描述】:

我有一个程序,它有一个大小不同的字节数组,但大约是 2300 字节。我想要做的是创建一个函数,该函数将创建一个新的字节数组,删除我传递给它的所有字节。例如:

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

我需要一个函数来删除任何等于 0xFF 的字节并返回一个新的字节数组。

任何帮助将不胜感激。顺便说一句,我正在使用 C#。

【问题讨论】:

  • 如果它的大小不同,它更像是一个集合而不是一个数组。但我理解需要使用数组来模拟集合以与旧 api 一起使用。

标签: c# .net bytearray


【解决方案1】:

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

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

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

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

【讨论】:

  • 简洁。超级有帮助。
  • 注意,Except 是设置差异。所以每个剩余的字节只返回一次。在我的情况下,printData.Except(bytesToRemove).ToArray() 没有得到预期的输出,而 printData.Where(e => bytesToRemove.All(b => b != e)).ToArray() 工作正常。
【解决方案2】:

分解问题:

你能写代码从一个数组复制到另一个数组吗?

你能写一个条件句吗?

你能分配一个新数组吗?

如果您对其中一个问题感到困惑,请具体询问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    相关资源
    最近更新 更多