Conversion binaire <> decimale efficace

Contenu du snippet

Les deux fonctions de conversion binaire <> decimal. La conversion decimal -> bonaire implique de connaitre la taille du resultat binaire. On peut éviter ça en parcourant 2 fois le tableau (afin de connaitre la taille), mais j'optimise donc je laisse comme ça, à vous de l'adapter suivant vos besoins...

Source / Exemple :


/* Conversion binaire <-> decimale */

#include <stdio.h>

int bin2dec(char *bin)
{
    int dec = 0;
    while(*bin)
    {
        dec = (2 * dec) + (*bin - '0');
        bin++;
    }
    return dec;
}

void dec2bin(int dec, char *bin, int size)
{
    int reste = 1, i;
    for(i = (size-1); reste != 0; i--)
    {
        reste = dec / 2;

  • (bin+i) = (dec % 2) + '0';
dec = reste; }
  • (bin+(size)) = '\0';
return; } int main() { /* Conversion de 16 en décimal puis en binaire */ char buf[256]; printf("%d\n", bin2dec("10000")); dec2bin(16, buf, 5); printf("%s\n", buf); system("pause"); return 0; }

Conclusion :


Vous aurais surement vu ce type de fonction ailleurs sur le site mais j'ai codé la mienne perso pour plus de clarté. Pour les explications, voir l'algorithme de la page : http://gabriel.braun.free.fr/CoursInfo/Codage/binaire.html dont je me suis inspiré... (ça remplace largement les commentaires)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.