Question #2642   Proposée par Answiki le 26/11/2021 à 20:03:42 UTC

En C, comment écrire une fonction qui convertit un entier en binaire dans une chaîne de caractères ?

Answer   Submitted by Answiki on 11/26/2021 at 08:13:59 PM UTC

La fonction C suivante permet de convertir un entier en binaire et d'enregistrer le résultat dans une chaîne de caractères :

// Convertit un entier en binaire
// integer : l'entier à convertir
// binary : la chaîne de caractères qui va contenir le résultat
// n : nombre de bits (8, 16, 32 ...)
void int2bin(unsigned integer, char* binary, int n=8)
{  
  for (int i=0;i<n;i++)   
    binary[i] = (integer & (int)1<<(n-i-1)) ? '1' : '0';
  binary[n]='\0';
}

Testez la fonction en ligne sur repl.it.


Il existe une autre option, plus conviviale qui retourne directement la chaîne de caractères. Mais attention, la mémoire nécessaire à la chaîne de caractères est allouée dans la fonction, il est nécessaire de la libérer en dehors de la fonction.

// Convertit un entier en binaire
// integer : l'entier à convertir
// n : nombre de bits (8, 16, 32 ...)
// Retourne une chaîne de caractères contenant le mot binaire
char* int2bin(unsigned integer, int n=8)
{
  char* binary = (char*)malloc(n+1);
  for (int i=0;i<n;i++)   
    binary[i] = (integer & (int)1<<(n-i-1)) ? '1' : '0';
  binary[n]='\0';
  return binary;
}

Testez la fonction en ligne sur repl.it.


Voire aussi :


2 events in history
Answer by Answiki on 11/26/2021 at 08:13:59 PM

La fonction C suivante permet de convertir un entier en binaire et d'enregistrer le résultat dans une chaîne de caractères :

// Convertit un entier en binaire
// integer : l'entier à convertir
// binary : la chaîne de caractères qui va contenir le résultat
// n : nombre de bits (8, 16, 32 ...)
void int2bin(unsigned integer, char* binary, int n=8)
{  
  for (int i=0;i<n;i++)   
    binary[i] = (integer & (int)1<<(n-i-1)) ? '1' : '0';
  binary[n]='\0';
}

Testez la fonction en ligne sur repl.it.


Il existe une autre option, plus conviviale qui retourne directement la chaîne de caractères. Mais attention, la mémoire nécessaire à la chaîne de caractères est allouée dans la fonction, il est nécessaire de la libérer en dehors de la fonction.

// Convertit un entier en binaire
// integer : l'entier à convertir
// n : nombre de bits (8, 16, 32 ...)
// Retourne une chaîne de caractères contenant le mot binaire
char* int2bin(unsigned integer, int n=8)
{
  char* binary = (char*)malloc(n+1);
  for (int i=0;i<n;i++)   
    binary[i] = (integer & (int)1<<(n-i-1)) ? '1' : '0';
  binary[n]='\0';
  return binary;
}

Testez la fonction en ligne sur repl.it.


Voire aussi :


Question by Answiki 11/26/2021 at 08:03:42 PM
En C, comment écrire une fonction qui convertit un entier en binaire dans une chaîne de caractères ?

Icons proudly provided by Friconix.