простой и быстрый способ конвертировать int в двоичный?
то, что я ищу, это что-то вроде PHPs decbin
функция в C#. Эта функция преобразует десятичные числа в свое представление в виде строки.
например, при использовании decbin(21)
возвращает 10101
как результат.
нашел эта функция который в основном делает то, что я хочу, но может есть лучше / быстрее способ?
5 ответов:
var result = Convert.ToString(number, 2);
- почти единственное использование Для (в противном случае бесполезно)
Convert
класса.
большинство способов будет лучше и быстрее, чем функция, которую вы нашли. Это не очень хороший пример о том, как сделать преобразование.
встроенный метод
Convert.ToString(num, base)
- это очевидный выбор, но вы можете легко написать замены, если нужно работать по-другому.Это простой способ, где вы можете указать длину двоичного числа:
public static string ToBin(int value, int len) { return (len > 1 ? ToBin(value >> 1, len - 1) : null) + "01"[value & 1]; }
он использует рекурсию, первая часть (перед +) вызывает СЕБЯ Для создания двоичного файла представление числа за исключением последней цифры, а вторая часть заботится о последней цифре.
пример:
Console.WriteLine(ToBin(42, 8));
выход:
00101010
чтобы иметь двоичное значение в (по крайней мере) заданном количестве цифр, дополненных нулями:
string bin = Convert.ToString(1234, 2).PadLeft(16, '0');
Преобразовать.ToString выполняет преобразование в двоичную строку.
В PadLeft добавляет нули, чтобы заполнить его до 16 знаков.
вот мой ответ:
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; }
используя Pow вместо модуля и деления, поэтому я думаю, что это более быстрый способ.