Yup, that is the way to do it!
Maybe you did this, but we can put the sixteen hexadecimal digits into an array of 1-character strings ["0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F"] and CONCAT them one at a time using the 4-bit values as the index as we extract them. So the sequence would be summat like
MOV dint_tag tmp_dint_tag CLR string_tag.LEN 0
AND tmp_dint_tag 15 tmp_4_dint_tag CONCAT string_array[tmp_4_dint_tag] string_tag string_tag SUB tmp_dint_tag tmp_4_dint_tag tmp_dint_tag DIV tmp_dint_tag 16 tmp_dint_tag
AND tmp_dint_tag 15 tmp_4_dint_tag CONCAT string_array[tmp_4_dint_tag] string_tag string_tag SUB tmp_dint_tag tmp_4_dint_tag tmp_dint_tag DIV tmp_dint_tag 16 tmp_dint_tag
AND tmp_dint_tag 15 tmp_4_dint_tag CONCAT string_array[tmp_4_dint_tag] string_tag string_tag SUB tmp_dint_tag tmp_4_dint_tag tmp_dint_tag DIV tmp_dint_tag 16 tmp_dint_tag
AND tmp_dint_tag 15 tmp_4_dint_tag CONCAT string_array[tmp_4_dint_tag] string_tag string_tag SUB tmp_dint_tag tmp_4_dint_tag tmp_dint_tag DIV tmp_dint_tag 16 tmp_dint_tag
AND tmp_dint_tag 15 tmp_4_dint_tag CONCAT string_array[tmp_4_dint_tag] string_tag string_tag SUB tmp_dint_tag tmp_4_dint_tag tmp_dint_tag DIV tmp_dint_tag 16 tmp_dint_tag
AND tmp_dint_tag 15 tmp_4_dint_tag CONCAT string_array[tmp_4_dint_tag] string_tag string_tag SUB tmp_dint_tag tmp_4_dint_tag tmp_dint_tag DIV tmp_dint_tag 16 tmp_dint_tag
AND tmp_dint_tag 15 tmp_4_dint_tag CONCAT string_array[tmp_4_dint_tag] string_tag string_tag SUB tmp_dint_tag tmp_4_dint_tag tmp_dint_tag DIV tmp_dint_tag 16 tmp_dint_tag
AND tmp_dint_tag 15 tmp_4_dint_tag CONCAT string_array[tmp_4_dint_tag] string_tag string_tag SUB tmp_dint_tag tmp_4_dint_tag tmp_dint_tag DIV tmp_dint_tag 16 tmp_dint_tag
It could be done in a loop but this is just as good.
I suspect OP used an array of SINTs [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70] and MOVed them into each position of the 8-character string, instead of the CONCAT.