Mr_Fulano
asked on
Finding a pattern of bytes within an Array of bytes.
Hi, I'm using MS VS2010, C#.NET. I have an Array of bytes wherein I need to identify a pattern of multiple bytes. Much like the IndexOf() method does, but with an array of bytes.
Therefore, if my array contained "0A0A0A0A" (which is four tens in a row), I would like to know the index of where that pattern begins.
I came up with a way to find a NULL value, but it doesn't work for patterns of multiple bytes. Can someone provide some help to get me back on track?
Obviously I can convert the bytes to string and then look for the string equivalent, but there has to be a way to do it without so many conversions, which can cause "misreads".
Thanks,
Fulano
Therefore, if my array contained "0A0A0A0A" (which is four tens in a row), I would like to know the index of where that pattern begins.
I came up with a way to find a NULL value, but it doesn't work for patterns of multiple bytes. Can someone provide some help to get me back on track?
Obviously I can convert the bytes to string and then look for the string equivalent, but there has to be a way to do it without so many conversions, which can cause "misreads".
Thanks,
Fulano
// hexAddress - the starting address of the string
// bytes2ReadAsString - the amount of bytes to read past the starting point.
private string findNull(string hexAddress, string bytes2ReadAsString)
{
int counter = 0;
string i = "";
br.BaseStream.Position = (Int32.Parse(hexAddress, System.Globalization.NumberStyles.HexNumber));
foreach (byte mybyte in br.ReadBytes(Convert.ToInt32(bytes2ReadAsString)))
{
if (mybyte.Equals(0x0))
{
break;
}
counter++;
}
i = counter.ToString("X");
// This returns the index of where the NULL begins.
return i;
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Hi,
to convert hex string into byte array, you can use this:
http://pcheruku.wordpress.com/2008/10/21/sample-c-code-to-convert-hexadecimal-string-to-bytes/
to convert hex string into byte array, you can use this:
http://pcheruku.wordpress.com/2008/10/21/sample-c-code-to-convert-hexadecimal-string-to-bytes/
ASKER
Thank Rimvis...very good samples. These worked well together.
Thanks again!
Thanks again!
ASKER
Both sets of code are excellent!
ASKER
My array is: myBytes
My Pattern is: 0A0A0A0A
So, I'd like to pass it the arguments like this:
ByteSearch( myBytes, "0A0A0A0A", 0);
However, that won't work. I need make the pattern into an Array -- I think....
Still working on it.
Fulano