Обаче тая стратегия е добра и за конвертиране към десетична стойност. Цената е едно деление което е трудно да се избегне. Дори на х64 умножението по 10 е възможно с последователност от 2 инструкции без умножение.
unsigned utos( char *s, unsigned val ) {
uint64_t xval = ( val * 0x100000000ULL + 999999999 ) / 1000000000;
unsigned i, j, x;
for( j = i = 0; i < 10; i++ ) {
s[j] = ( x = xval >> 32 ) + '0';
if( x ) break;
xval *= 10;
}
while( i++ < 9 ) {
xval = (uint32_t)xval;
xval *= 10;
s[++j] = ( xval >> 32 ) + '0';
}
s[++j] = 0;
return j;
}