我想知道在 C# 中从另一个字节数组中查找子数组索引的最佳方法是什么。例如,如果我将以下内容作为我的主数组。
byte[] inputArray = {0xFF,0xDD,0xA,0xF,0x1,0x2,0x78,0x05,0x00,0x01};
byte[] tobeFound = {0x78,0x05};
现在我想在 inputArray 中找到字节数组“tobeFound”。我应该得到索引 6。这是一个简短的例子。两个数组都可以非常大。
那我应该去干什么? LINQ,Array.IndexOf ??我也需要有好的表现。
感谢您的指点和分享一些经验!
最佳答案
您可以使用经过充分测试的 Boyer-Moore string search algorithm ,因为您本质上是在搜索字符串(字节可以被视为字符)。
这似乎是 a decent implementation of Boyer-Moore in C#用于字符串(连同 turbo Boyer-Moore 和另一个我从未听说过的)。将它们转换为使用 Byte[]
应该是微不足道的。
关于c# - 在 C# 中查找字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7990957/