Skip to main content
2 of 3
added a commented version
Arnauld
  • 197.7k
  • 20
  • 179
  • 650

JavaScript (ES6), 61 bytes

Expects a list of 2-character hexadecimal strings.

a=>a.map(s=>(g=k=>k&8?'':g(-~k)+" X"['0x'+s>>k&1])``).join`
`

Try it online!

Commented

a =>             // a[] = input array
a.map(s =>       // for each string s in a[]:
  ( g = k =>     //   g is recursive function taking a counter k
    k & 8 ?      //   if k is equal to 8:
      ''         //     stop the recursion
    :            //   else:
      g(-~k) +   //     do a recursive call with k + 1
      " X"[      //     append either ' ' or 'X':
        '0x' + s //       parse s as a hexadecimal string
        >> k     //       right-shift it by k position
        & 1      //       and isolate the least significant bit
      ]          //     end of lookup
  )``            //   initial call to g with k zero'ish
).join`\n`       // end of map(); join with line-feeds
Arnauld
  • 197.7k
  • 20
  • 179
  • 650