moyen simple et rapide de convertir un int en binary?

Ce que je cherche, c’est quelque chose comme la fonction de decbin en C #. Cette fonction convertit les décimales en sa représentation sous forme de chaîne.

Par exemple, lorsque vous utilisez decbin(21) il renvoie 10101 comme résultat.

J’ai trouvé cette fonction qui fait essentiellement ce que je veux, mais peut-être y a-t-il un moyen meilleur / plus rapide?

 var result = Convert.ToSsortingng(number, 2); 

– Presque la seule utilisation de la classe de Convert (sinon inutile).

La plupart des moyens seront meilleurs et plus rapides que la fonction que vous avez trouvée. Ce n’est pas un très bon exemple sur la façon de faire la conversion.

La méthode Convert.ToSsortingng(num, base) est un choix évident, mais vous pouvez facilement écrire un remplacement si vous en avez besoin pour fonctionner différemment.

C’est une méthode simple où vous pouvez spécifier la longueur du nombre binary:

 public static ssortingng ToBin(int value, int len) { return (len > 1 ? ToBin(value >> 1, len - 1) : null) + "01"[value & 1]; } 

Il utilise la récursivité, la première partie (avant le +) appelle elle-même pour créer la représentation binary du numéro à l’exception du dernier chiffre, et la seconde partie s’occupe du dernier chiffre.

Exemple:

 Console.WriteLine(ToBin(42, 8)); 

Sortie:

 00101010 
 int toBase = 2; ssortingng binary = Convert.ToSsortingng(21, toBase); // "10101" 

Pour avoir la valeur binary dans (au moins) un nombre spécifié de chiffres, complétez avec des zéros:

 ssortingng bin = Convert.ToSsortingng(1234, 2).PadLeft(16, '0'); 

Le Convert.ToSsortingng effectue la conversion en chaîne binary.
Le PadLeft ajoute des zéros pour le remplir jusqu’à 16 chiffres.

Ceci est ma réponse:

  static bool[] Dec2Bin(int value) { if (value == 0) return new[] { false }; var n = (int)(Math.Log(value) / Math.Log(2)); var a = new bool[n + 1]; for (var i = n; i >= 0; i--) { n = (int)Math.Pow(2, i); if (n > value) continue; a[i] = true; value -= n; } Array.Reverse(a); return a; } 

Utiliser Pow au lieu de modulo et diviser alors je pense que c’est plus rapide.