В большинстве функций, упомянутых / предложенных здесь, используется оператор% модуля, что очень дорого для встроенной системы.
Так что использование деления на 10 - это единственный видный вариант, который я думаю. Вот оно:
/*for byte which is 3 digit most*/
void itoa(unsigned char value,char *desitination)
{
desitination[0] = '\0';
desitination[1] = '\0';
desitination[2] = '\0';
desitination[3] = '\0';//you at least 4 char array, last char is NULL
while (value >= 100)
{
desitination[0]++;
value -= 100;
}
desitination[1] = '0';
while (value >= 10)
{
desitination[1]++;
value -= 10;
}
value+= '0';
desitination[2] =value;
}