将整数转换为带前导零的二进制字符串

时间:2014-05-28 07:23:40

标签: c# binary

我需要将int转换为bin并使用额外的位。

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

它会返回11,但我需要001100000011

怎么做?

6 个答案:

答案 0 :(得分:46)

113的{​​{3}}。该值的二进制表示为2位。

3 = 2 0 * 1 + 2 1 * 1

您可以使用binary representation方法添加这些零。

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

答案 1 :(得分:1)

Soner回答的问题:

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

只想添加只是为了让你知道。 int参数是字符串和char参数的字符总数,这些字符将被添加以填充字符串中缺少的空格。在你的例子中,你想要输出0011,它是4个字符,需要0,因此你使用4作为int参数,在char中使用'0'。

答案 2 :(得分:1)

我创建了一种动态写入前导零的方法

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');
}

首先我们将我的值转换为二进制。 初始化位以设置二进制输出的长度。 一个Bitblock有4位数。在for循环中,我们检查转换后的二进制值的长度并添加&#34;位&#34;为二进制输出的长度。

实施例: 输入:1 - &gt; 0001; 输入:127 - &gt; 01111111 等....

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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 :(得分:0)

您可以使用以下方法:

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