Codice:
void itob(int n, int b, char s[]){
int i, sign;
sign = (n >= 0) ? 1 : -1;
i = 0;
do {
s[i++] = (n%b*sign > 9 ) ? sign * (n % b) + 'a' - 10 : sign * (n % b) + '0';
} while ((n /= b)*sign);
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
Così funziona, ma mi sembrava di averne fatta una migliore tempo fa... boh...