unsigned char dig_base = 10; //База системы счисления, в которую выполняем разложение
long long val = 123456789; //Входное число
unsigned char* digits = new unsigned char[1];
int pos = 0;
while(val>0)
{
realoc(digits, sizeof(unsigned char) * (pos+1));
digits[pos] = (unsigned char)((long long)val%dig_base);
val = val/(long long)dig_base ;
pos++;
}
после выполнения - digits содержит массив цифр, pos - количество цифр в этом числе. Если у вас фиксированное количество цифр - убираем realoc в цикле и вверху объявляем new unsigned char[DIGITS_COUNT]; В таком случае работать будет чуть быстрее.