Non vedo come possa esserti utile la funzione atoi che, se non ricordo male, converte una stringa in numero. Può essere che abbia anche una sorta di conversione interna, ma se così è non la conosco a sufficienza.
Per convertire un numero da base qualunque (minore di 10) a base 10 è sufficiente usare un po' di matematica.
Prova a vedere questa funzione e cerca di capirne la logica (la funzione non è delle migliori, l'ho scritta al volo):
codice:
int converti_base_to_10(int base, int x) {
int ret = 0;
int temp = 0;
if (x < base) return x;
temp = converti_base_to_10(base, x / 10);
ret = base * temp + (x % 10);
return ret;
}
Il primo parametro è la base del numero da convertire, il secondo parametro è il numero da convertire in base 10. Esempio:
codice:
// Converte il valore 500 espresso in base 8 nel relativo valore in base 10
int convertito = converti_base_to_10(8, 500);
Per basi superiori alla 10 non è possibile usare questa funzione (per ovvie ragioni).
Ciao.