Converting a number to a given base should be done as a string.
Here is a simple and generic conversion function:
#include <stdio.h>
char *convert(char *dest, size_t size, int val, int base) {
static char digits[] = "0123456789abcdefghijklmnopqrstuvwxyz";
char buf[66];
char *p = buf + sizeof(buf);
unsigned int n = val;
if (base < 2 || base > 36 || !dest || size == 0)
return NULL;
if (val < 0)
val = -n;
*--p = '\0';
while (n >= base) {
*--p = digits[n % base];
n /= base;
}
*--p = digits[n];
if (val < 0)
*--p = '-';
if (buf + sizeof(buf) - p > size) {
buf[size - 1] = '\0';
return memset(buf, size - 1, '*');
} else {
return memcpy(dest, p, buf + sizeof(buf) - p);
}
}
int main() {
char buf[32];
int num;
while (scanf("%d", &num)) {
printf("%d -> %s\n", num, convert(buf, sizeof buf, num, 6);
}
return 0;
}