Parce que, ligne 22, tu écris :
sprintf(hexrep,"%08x",base_convert("01111100111101111100000010001010", 2));
Et que « %08x » attend un unsigned int alors que base_convert() renvoie un double, et qu'aucune conversion implicite ne peut se faire ici. Rien que pour cela tu auras des infos erronées.
Ensuite, à la ligne suivante :
printf("Resultat de la conversion : %08x\n",hexrep);
Tu as laissé « %08x » alors que c'est une chaîne de caractères que tu veux afficher.
Enfin. Placer le résultat de strtol() dans un double, c'est très risqué. Ici, ta chaîne binaire en entrée ne fait que 32 bits de long, ça passe. Mais dès qu'elle va dépasser 52 bits, tu vas commencer à avoir des surprises.
Partager