Conversion hexadécimal décimal de grands nombres dans Excel

Conversion hexadécimal décimal de grands nombres dans Excel

J'avais besoin de convertir un grand nombre de grandes valeurs hexadécimales en décimal. Je me suis dit que ça irait vite avec Excel. En effet, Excel dispose de la fonction HEXDEC :

=HEXDEC(nombre)

Cela fonctionne très bien tant que l'argument ne dépasse pas 10 caractères, soit 40 bits. Et le bit de poids fort correspond au signe. Il ne reste que 39 bits pour la valeur. Ainsi on ne peut convertir d'hexadécimal en décimal un nombre supérieur à 0x7FFFFFFFFF soit 549 755 813 887. Or j'avais besoin de convertir des nombres de qui aillaient jusqu'à 0xFFFFFFFFFF, soit 40 bits sans signe. De plus ils étaient de la forme 0x.... J'ai donc fait une formule que permet de gérer cela :

=SI(NBCAR(A1)<12;HEXDEC(DROITE(A1;NBCAR(A1)-2));SI(NBCAR(A1)=12;(HEXDEC(DROITE(GAUCHE(A1;4);2))*4294967296+HEXDEC(DROITE(A1;8)));0))

En pseudo code, ça fait quelque chose comme cela :

IF (NBCAR(A1)<12) 
  supprimer les 2 premiers caractères ("0x")
  convertir en hexadécimal
ELSE IF (NBCAR(A1) == 12)
  pour les 4 premiers caractères : 
    supprimer les 2 premiers caractères ("0x")
    convertir en hexadécimal
    multiplier par 4294967296
  pour les 8 autres caractères :
    convertir en hexadécimal
  additionner les deux résultats

Ainsi on peut convertir d'hexadécimal en décimal des nombres de 40 bits. En extrapolant la formule, il devient possible de convertir des nombres encore plus grands.


Related Posts

  • Aucun billet en rapport trouvé

Published by

lemnet

lemnet

KEEP CALM AND WORK HARDER