El problema radica en el printf("%g"). No se debe usar el %g para enteros.
Podemos comprobar que retorno es correcto
Aunque por eficiencia, yo lo haría sin la función pow (tal y como ha hecho Leo).
Podemos comprobar que retorno es correcto
Código (cpp) [Seleccionar]
#include <stdio.h>
int obtenerNumero(char *operando,int base)
{
int i,potencia,lon,entero=0,x = 1;
int num_decimal = 0;
lon = strlen(operando);
for(i = lon-1,potencia = 0;operando[i];i--,potencia++)
{
/*if(esLetraBase16(operando[i]))
entero = hexadecimal(operando[i]);
else*/
entero = operando[i]-'0';
num_decimal+= pow(base,potencia)*entero;
//printf("%g\n",num_decimal);
}
//printf("[%d]",num_decimal);
return num_decimal;
}
int main(){
printf("%d\n",obtenerNumero("65536",10));
return 0;
}
Aunque por eficiencia, yo lo haría sin la función pow (tal y como ha hecho Leo).