我想知道从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 ?? 我也需要有良好的表现.
感谢您的任何指示并分享一些经验!
您可以使用经过充分测试的Boyer-Moore字符串搜索算法,因为您实际上是在搜索字符串(字节可以被视为字符).
这里似乎是C#中Boyer-Moore的一个不错的实现方式(以及turbo Boyer-Moore和另一个我从未听说过的).将这些转换为使用Byte[]应该是微不足道的.