ayuda con codigo en C de base hex a dec

Iniciado por martinpss, 28 Septiembre 2018, 01:57 AM

0 Miembros y 1 Visitante están viendo este tema.

martinpss

necesito ayuda en un codigo en C para transformar un numero en base hexadecimal a decimal, eh intentado pero no me resulta

martinpss

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <math.h>

int main() {

    char cad[10]={' '};

    int c=0,n=0,tam,i,num[1];

    system("clear");

    printf ("Ingrese el numero: ");

    scanf("%s",cad);

    tam=sizeof(cad);

    for(i=tam-1; i>=0; i--) {

        if(cad<10 && cad>0)

            n=n+cad*pow(16,c);

        else if(cad=='a')  num=10;

        else if(cad=='b') num=11;

        else if(cad=='c') num=12;

        else if(cad=='d') num=13;

        else if(cad=='e') num=14;

        else if(cad=='f') num=15;

        n=n+num*pow(16,c);

        c++; }

    printf ("El resultado es: %d",n);

   

    return 0;

}

donYoyo

hola, estuviste cerca del resultado, solo algunos alcances que te los comente en el mismo código.


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

int main() {
    char cad[10]={' '};

    int c=0,n=0 /*lo usamos para acumular*/,tam,i,num;   // num[1] lo convertiria en un vector o arreglo

    system("clear");

    printf ("Ingrese el numero: ");

    scanf("%s",cad);

    //   tam=sizeof(cad);   la funcion sizeof siempre te devolvera el tamanio total de la variable (dependiendo del tipo)
    tam=(int)strlen(cad);

    for(i=tam-1; i>=0; i--) {

        if ((cad[i]<='9') && (cad[i]>='0'))
            num=cad[i]-48;
        else if((cad[i]=='a') || (cad[i]=='A')) num=10;
        else if((cad[i]=='b') || (cad[i]=='B')) num=11;
        else if((cad[i]=='c') || (cad[i]=='C')) num=12;
        else if((cad[i]=='d') || (cad[i]=='D')) num=13;
        else if((cad[i]=='e') || (cad[i]=='E')) num=14;
        else if((cad[i]=='f') || (cad[i]=='F')) num=15;

        n=n+num*(int)pow(16,c);

        c++;
      }
        printf ("El resultado es: %d\n",n);



    return 0;

}



nota: la variable cad al ser un arreglo de caracteres, se puede utilizar como el texto completo, o por cada posición o byte, utilizando un subindice, ejemplo cad[1], lo que se rescata de ahí, es el carácter ASCII que representa al carácter contenido.
ya que los números en la tabla ASCII están representados de el (ASCII-48) "0" al (ASCII-57) "9", al restarle 48 consigues su valor o representación numérica.
buena suerte, y adelante con mas códigos, que es la única forma de aprender.


MAFUS

unsignes num;
scanf("%x", &num);
printf("%u", num);