One way would be to read the 64-bit value into two
uint32_t variables, and then use multiple-precision division to extract the decimal digits (in reverse order). For example, given
hi, lo containing the 64-bit value, you can extract the lowest significant decimal digit by:
hi_quot = hi / 10;
hi_rem = hi % 10;
hi_rem = (hi_rem << 16) % 10;
hi_rem = (hi_rem << 16) % 10;
lo_quot = lo / 10;
lo_rem = lo % 10;
rem = (hi_rem + lo_rem) % 10;
hi = hi_quot;
lo = hi_rem * 0x19999999 + (6 * hi_rem) / 10 + lo_quot;
Repeat until all digits are extracted (from least significant to most significant).
Note that I have not tested this code!