Преобразовать целое число в двоичную строку с ведущими нулями

Мне нужно преобразовать int в bin и с дополнительными битами.

string aaa = Convert.ToString(3, 2);

он возвращает 11, но мне нужно 0011 или 00000011.

Как это сделать?

Ответы

Ответ 1

11 двоичное представление 3. Бинарное представление этого значения составляет 2 бит.

3 = 2 0 * 1 + 2 1 * 1

Вы можете использовать String.PadLeft(Int, Char), чтобы добавить эти нули.

Convert.ToString(3, 2).PadLeft(4, '0') // 0011
Convert.ToString(3, 2).PadLeft(8, '0') // 00000011

Ответ 2

Только то, что Soner ответил на использование:

    Convert.ToString(3, 2).PadLeft(4, '0') 

Просто хочу добавить только для вас. Параметр int - это общее количество символов, которые ваша строка и параметр char являются символом, который будет добавлен, чтобы заполнить недостающее пространство в вашей строке. В вашем примере вам нужен вывод 0011, который имеет 4 символа и нуждается в 0, поэтому вы используете 4 как int param и '0' в char.

Ответ 3

string aaa = Convert.ToString(3, 2).PadLeft(10, '0');

Ответ 4

public static String HexToBinString(this String value)
{
        String binaryString = Convert.ToString(Convert.ToInt32(value, 16), 2);
        Int32 zeroCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(binaryString.Length) / 8)) * 8;

        return binaryString.PadLeft(zeroCount, '0');
}

Ответ 5

Вы можете использовать следующие методы:

public static class BinaryExt
{
    public static string ToBinary(this int number, int bitsLength = 32)
    {
        return NumberToBinary(number, bitsLength);
    }

    public static string NumberToBinary(int number, int bitsLength = 32)
    {
        string result = Convert.ToString(number, 2).PadLeft(bitsLength, '0');

        return result;
    }

    public static int FromBinaryToInt(this string binary)
    {   
        return BinaryToInt(binary);
    }

    public static int BinaryToInt(string binary)
    {   
        return Convert.ToInt32(binary, 2);
    }   
}

Пример:

int number = 3; 
string byte3 = number.ToBinary(8); // output: 00000011

string bits32 = BinaryExt.NumberToBinary(3); // output: 00000000000000000000000000000011

Ответ 6

Я создал метод динамической записи ведущих нулей

    public static string ToBinary(int myValue)
    {
        string binVal = Convert.ToString(myValue, 2);
        int bits = 0;
        int bitblock = 4;

        for (int i = 0; i < binVal.Length; i = i + bitblock)
        { bits += bitblock; }

        return binVal.PadLeft(bits, '0');
    }

Сначала мы преобразуем мое значение в двоичное. Инициализация бит для установки длины для двоичного вывода. Один битблок имеет 4 цифры. В for-loop мы проверяем длину нашего преобразованного двоичного значения и добавляем "биты" для длины для двоичного вывода.

Примеры: Вход: 1 → 0001; Вход: 127 → 01111111 и т.д....