Link to home
Start Free TrialLog in
Avatar of Mr_Fulano
Mr_FulanoFlag for United States of America

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".


// 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))
            i = counter.ToString("X");

            // This returns the index of where the NULL begins.
            return i;

Open in new window

Avatar of Rimvis
Flag of Lithuania image

Link to home
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Mr_Fulano


Hi Rimvis, I think it will help, but I'm still trying to figure out what arguments to pass it. It looks like I have to pass it two different Arrays of bytes. However, I have one Array and one string of bytes. For example:

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.

Thank Rimvis...very good samples. These worked well together.

Thanks again!
Both sets of code are excellent!