A oneliner elevating the fact, that base 4 have twice the digits of base 16:
''.join([str(q) for char in '{:x}'.format(val) for q in [int(char, 16) >> 2, int(char, 16) & 3]])
The downside is that it adds a leading 0 if number of digit would be odd.