Best strategy to parse 5 byte arrays to find a pattern
This is really a pure programming problem rather than an Arduino one, but to get you started, you could do a table lookup, like this:
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;

// number of items in an array
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
    
unsigned char patterns [] [5] =
  {

    { 0x7F, 0x08, 0x08, 0x08, 0x7F },   // H

    // other byte patterns here

  };  // end of patterns

char patterns_converted [] =
  {

  'H',

  // other letter equivalents here

  };  // end of patterns_converted


char convert_pattern (unsigned char what [5])
  {
  for (int i = 0; i &lt; ARRAY_SIZE (patterns_converted); i++)
    if (memcmp (what, patterns [i], 5) == 0)
      return patterns_converted [i];

  return '?';

  } // end of convert_pattern


int main ()
{

  unsigned char test1 [5] = { 0x7F, 0x08, 0x08, 0x08, 0x7F };
  unsigned char test2 [5] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE };  // won't be found

  char x = convert_pattern (test1);

  printf (&quot;Result for test1 is %c\n&quot;, x);

  x = convert_pattern (test2);

  printf (&quot;Result for test2 is %c\n&quot;, x);

}

You would find out all your bit patterns and put them in the patterns array, and then put the equivalent letter in the patterns_converted array.
The function convert_pattern does a linear search of the table of patterns, returning the corresponding letter, or &quot;?&quot; if not found.
I coded that in pure C++, but since the Arduino IDE basically uses C++ you should be able to convert it for your use.