Your suggestion looks promising, but I do not know in advance what the hex codes will be. The string comes from a language translation table, so the hex could any of the hex codes for characters not on a standard UK English keyboard. Initially just Spanish language, but later many more languages.
I reckon the MapSubString() you suggested is going to be useful.
But also i have found this using my friend Google:
=chr(Num#('3F', '(HEX)')) which from hex 3F returns it printable character ?
Now I just need to somehow mash this up into something workable. [Maybe some cunning dollar expansion?]