我需要为给定的十六进制值搜索可能非常大的字节数据结构(最大4GB)。问题是十六进制值的字符串输入可以是任何大小,包括奇数,例如“ ABC”。而不是将字节数据转换为字符串数据并执行字符串搜索(我已经完成了FWIW),我想知道一种性能可能更好的算法,该算法本质上逐字节地搜索。
鉴于数据源的大小,搜索当然可以分段进行。理想情况下,输出是匹配项的起始索引或地址的枚举。出于这个问题的目的,我们假设数据结构是byte[]
,输出是int
索引和半字节偏移量(例如bool firstNibbleMatch
)。
在进行尝试之前,对配置文件,移位操作与ascii转换的成本(whether via C# library or roll-you-own unsafe code等)有任何想法吗?我主要关心的是性能。从理论上讲这种方法会更好吗?