Red de conocimiento informático - Conocimiento del nombre de dominio - Conversión de emergencia del código fuente del programa 2 8 16 a base 10

Conversión de emergencia del código fuente del programa 2 8 16 a base 10

//------------------------------------------------ --------------------------

#include

lt;stdio.hgt;

# incluir

lt; string.hgt;

char

*read(char

*num, const

unsigned

int

base)

//leer un entero base sin signo

{

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

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;

}

//------------- ---- ---------------------------------------------- ---- ------