De hexadecimal à decimal

Problème



Comment convertir un chaine de caractères contenant un nombre en hexadecimal ? ( qui a plus court ? )

( Merci à Eric pour ses optimisations )

Programme



unsigned long hex2dec(char *s, unsigned long d) {
  return *s ? hex2dec(s + 1, (d << 4) + *s-'0'-(*s>='A')*7 ) : d;
}

int main (int argc, char **argv) {
  printf("%ld\n", hex2dec(argv[1], 0));
}



Variante


(avec un joli tableau, idée de Eric)
unsigned long hex2dec(char *s, unsigned long d) {
  return *s ? hex2dec(s + 1, (d << 4) + (*s-'0')
  ["\000\001\002\003\004\005\006\007\010\011_______\012\013\014\015\016\017"]): d;
}

int main (int argc, char **argv) {
  printf("%ld\n", hex2dec(argv[1], 0));
}


codingfun_nospam_@salemioche.com
Dernière mise à jour: 12 Jun 2009 - Réalisé avec youhp3
A voir : Calculatrice - Glaces.org - Sorbets.org - IP relax - creer son site / forum
v1.0 - © Nicolas JEAN :CV - NiKoZEN : Création site internet 2002-2009
Hébergement web - appareils musculation - Lingerie - rencontre
saut en parachute - shopping en ligne - referencement site web