#include <stdio.h>
int divBytesBy10(unsigned char* bytes, size_t count, unsigned char* remainder)
{
unsigned carryOver = 0;
int nonZeroQuotient = 0;
while (count--)
{
carryOver = carryOver * 256 + *bytes;
*bytes = carryOver / 10;
carryOver %= 10;
nonZeroQuotient |= *bytes++;
}
*remainder = '0' + carryOver; // convert to ASCII right here
return nonZeroQuotient;
}
int main(void)
{
unsigned char num[] = {0xFF, 0xFF, 0xFF, 0xFF}, rem, cnt = 0;
char str[11], *p = str + sizeof(str) - 1;
*p = '\0';
while (divBytesBy10(num, sizeof(num), --p)) {}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZGl2Qnl0ZXNCeTEwKHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIGNoYXIqIHJlbWFpbmRlcikKewogIHVuc2lnbmVkIGNhcnJ5T3ZlciA9IDA7CiAgaW50IG5vblplcm9RdW90aWVudCA9IDA7CgogIHdoaWxlIChjb3VudC0tKQogIHsKICAgIGNhcnJ5T3ZlciA9IGNhcnJ5T3ZlciAqIDI1NiArICpieXRlczsKICAgICpieXRlcyA9IGNhcnJ5T3ZlciAvIDEwOwogICAgY2FycnlPdmVyICU9IDEwOwoKICAgIG5vblplcm9RdW90aWVudCB8PSAqYnl0ZXMrKzsKICB9CgogICpyZW1haW5kZXIgPSAnMCcgKyBjYXJyeU92ZXI7IC8vIGNvbnZlcnQgdG8gQVNDSUkgcmlnaHQgaGVyZQogIHJldHVybiBub25aZXJvUXVvdGllbnQ7Cn0KCmludCBtYWluKHZvaWQpCnsKICB1bnNpZ25lZCBjaGFyIG51bVtdID0gezB4RkYsIDB4RkYsIDB4RkYsIDB4RkZ9LCByZW0sIGNudCA9IDA7CiAgY2hhciBzdHJbMTFdLCAqcCA9IHN0ciArIHNpemVvZihzdHIpIC0gMTsKICAqcCA9ICdcMCc7CiAgd2hpbGUgKGRpdkJ5dGVzQnkxMChudW0sIHNpemVvZihudW0pLCAtLXApKSB7fQogIHByaW50ZigiJXNcbiIsIHApOwogIHJldHVybiAwOwp9Cg==