Conversión de emergencia del código fuente del programa 2 8 16 a base 10
#include
lt;stdio.hgt; p>
# incluir
lt; string.hgt;
char
*read(char
*num, const
unsigned
int
base)
//leer un entero base sin signo
{ p >
fflush(stdin);
interruptor
(base)
{
predeterminado:
fprintf(stderr, "ERROR, NECESITA
2, 8.10
O
16
PERO
HAY
HAY
u\n", base);
num=NULL;
romper;
caso
2:
scanf("[10]", num);
romper;
caso
8:
scanf("[0-7]",num);
romper;
caso
10 :
scanf("[0-9]", num);
romper
caso
16:
p>scanf("[0-9a-zA-Z]",num);
romper;
}
regresar p >
num;
}
unsigned
long
int
binToDec(char< / p>
*num)
//Convierte un entero binario en el número decimal correspondiente
{
unsigned
int< / p>
i;
unsigned
long
int
dec=0;
size_t
len=strlen(num);
for
(i
=
0;
p>
ilt;len;
i )
{
si
(núm[ i]-48)
{
dec|=1lt;lt;len-i-1;
}
}
retorno
dec;
}
unsigned
long
int
toDec(char
p>*num, const
unsigned
int
base)
/ / Devuelve Ninguno en forma decimal base del entero con signo num
{
uns
igned
long
int
dec;
if
(num==NULL)
dec=-1;
else
interruptor
(base)
{
caso
2:
dec=binToDec(num);
romper;
caso
8:
sscanf(num,."o",amp;dec);
break;
caso
10:
sscanf(num, "ld", y dec;
break;
caso
16:
sscanf (num, "x", amp; dec);
descanso
}
retorno
dec; >
}
int
principal(vacío)
{
char
num[ tamañode (unsigned
long
int)*8 1];
unsigned
int
base;
printf("base:");
scanf("u", amp; base); //ingresa binario sin formato
printf("número:" ); //Ingresa el entero positivo original
printf("lu", toDec(read(num, base), base));
/Calcula y genera el entero correspondiente en base 10
retorno
0;
}
//------------- ---- ---------------------------------------------- ---- ------