private int SearchOffset(BinaryReader br) { byte[] haystack = null; bool found = false; int offset = 0; int basepos = 0; int hlength = 256; while (!((found | offset >= br.BaseStream.Length))) { br.BaseStream.Position = offset; basepos = offset; //keep basepos but don't wanna cast Long downto Integer //offset = 0 haystack = br.ReadBytes(hlength); offset = BoyerMooreHorspool.find(haystack, m_Header); found = offset >= 0; if (found) { offset += basepos; break; // TODO: might not be correct. Was : Exit Do } else { offset += hlength - m_Header.Length; } } return(offset); }
private long SearchOffset(BinaryReader br) { byte[] haystack = null; bool found = false; long offset = 0; long basepos = 0; int hlength = 260; long basepos_grow = hlength - m_Header.Length; while (!(found || (basepos >= br.BaseStream.Length))) { br.BaseStream.Position = basepos; haystack = br.ReadBytes(hlength); offset = BoyerMooreHorspool.find(haystack, m_Header); found = offset >= 0; if (found) { offset += basepos; break; } else { basepos += basepos_grow; } } return(offset); }
public void CreateStringWithMatchingCharactersAtEnd() { var message = "we have found the truth"; var wordToFind = "truth"; var bmhp = new BoyerMooreHorspool(message); var result = bmhp.Found(wordToFind); Assert.IsTrue(result); }
public void CreateStringWithNoMatchingCharactersSecond() { var message = "hruth is nowhere because it is miss spelled"; var wordToFind = "truth"; var bmhp = new BoyerMooreHorspool(message); var result = bmhp.Found(wordToFind); Assert.IsFalse(result); }
public void CreateStringWithMatchingCharactersAtStart() { var message = "truth is everywhere"; var wordToFind = "truth"; var bmhp = new BoyerMooreHorspool(message); var result = bmhp.Found(wordToFind); Assert.IsTrue(result); }
public void SSBoyerMooreHorspool() { BoyerMooreHorspool BMH = new BoyerMooreHorspool(); IEnumerable <ISearchMatch> result1 = BMH.Search(find1, test); Assert.AreEqual(exp1.Length, result1.First <ISearchMatch>().Length); Assert.AreEqual(exp1.Start, result1.First <ISearchMatch>().Start); IEnumerable <ISearchMatch> result2 = BMH.Search(find2, test); Assert.AreEqual(exp2.Length, result2.First <ISearchMatch>().Length); Assert.AreEqual(exp2.Start, result2.First <ISearchMatch>().Start); }
private int GetOffset(IMemoryPattern pattern) { switch (pattern.Algorithm) { case PatternScannerAlgorithm.BoyerMooreHorspool: return(BoyerMooreHorspool.IndexOf(Data, pattern.GetBytes().ToArray())); case PatternScannerAlgorithm.Naive: return(Naive.GetIndexOf(pattern, Data, _module)); } throw new NotImplementedException("GetOffset encountered an unknown PatternScannerAlgorithm: " + pattern.Algorithm + "."); }