That utility is called 'Utility' :-)
There are are many ways to do this in C (or C++). Things like itoa() or sprintf(). But they are all not very suited for embedded system programming, mainly because of the usual code bloat, but even worse with the danger of buffer overflow. That's why a lot of programmers use their own smaller and more efficient routines. For myself I have put them into a Processor Expert component, available here: Utility
It comes with many string manipulation routines (converting a value to a string or back, formatting a value (e.g. prefixing it with a fill character) and many more. They are all implemented in a way to avoid buffer overflows, so you have to pass the size of the buffer to the routines.
Example for what you want to do:
uin8_t buf[32];
uint32_t adcVal;
UTIL1_strcpy(buf, sizeof(buf), "Val: ");
UTIL1_strcatNum32u(buf, sizeof(buf), adcVal);
UTIL1_strcat(buf, sizeof(buf), "\r\n");
UART_Print(buf);
Hope this helps,
Erich