在C#中查找字节数组

1 c# arrays indexing

我想知道从C#中的另一个字节数组中查找子数组索引的最佳方法是什么.例如,如果我有以下作为我的主阵列.

byte[] inputArray = {0xFF,0xDD,0xA,0xF,0x1,0x2,0x78,0x05,0x00,0x01};
byte[] tobeFound = {0x78,0x05};
Run Code Online (Sandbox Code Playgroud)

现在我想在inputArray中找到字节数组"tobeFound".我应该得到索引6.这是一个简短的例子.两个阵列都可能非常大.

那我该怎么办?LINQ,Array.IndexOf ?? 我也需要有良好的表现.

感谢您的任何指示并分享一些经验!

cod*_*zen 7

您可以使用经过充分测试的Boyer-Moore字符串搜索算法,因为您实际上是在搜索字符串(字节可以被视为字符).

这里似乎是C#中Boyer-Moore的一个不错的实现方式(以及turbo Boyer-Moore和另一个我从未听说过的).将这些转换为使用Byte[]应该是微不足道的.

  • 本质是相同的:字符串只是一个字节序列.该算法对于字节数组同样有效. (2认同)