如何将整数转换为二进制表示?

我正在使用下面的代码:

String input = "8";
String output = Convert.ToInt32(input, 2).ToString();

但是它抛出了一个异常:

找不到任何可解析的数字


当前回答

var b = Convert.ToString(i,2).PadLeft(32,'0').ToCharArray().Reverse().ToArray();

其他回答

在c#中从任何经典基转换为任何基

string number = "100";
int fromBase = 16;
int toBase = 10;

string result = Convert.ToString(Convert.ToInt32(number, fromBase), toBase);

// result == "256"

支持的基数是2,8,10和16

您的示例中有一个表示为字符串的整数。假设你的整数实际上是一个整数,你想把这个整数转换成二进制字符串。

int value = 8;
string binary = Convert.ToString(value, 2);

返回1000。

using System;

class Program 
{
    static void Main(string[] args) {

        try {

            int i = (int) Convert.ToInt64(args[0]);
            Console.WriteLine("\n{0} converted to Binary is {1}\n", i, ToBinary(i));

        } catch(Exception e) {
            Console.WriteLine("\n{0}\n", e.Message);
        }
    }

    public static string ToBinary(Int64 Decimal) {
        // Declare a few variables we're going to need
        Int64 BinaryHolder;
        char[] BinaryArray;
        string BinaryResult = "";

        while (Decimal > 0) {
            BinaryHolder = Decimal % 2;
            BinaryResult += BinaryHolder;
            Decimal = Decimal / 2;
        }

        BinaryArray = BinaryResult.ToCharArray();
        Array.Reverse(BinaryArray);
        BinaryResult = new string(BinaryArray);

        return BinaryResult;
    }
}

这是一个有趣的阅读,我正在寻找一个快速复制粘贴。 我知道我很久以前用bitmath做过这件事。

以下是我的看法。

// i had this as a extension method in a static class (this int inValue);

public static string ToBinaryString(int inValue)
{
    string result = "";
    for (int bitIndexToTest = 0; bitIndexToTest < 32; bitIndexToTest++)
        result += ((inValue & (1 << (bitIndexToTest))) > 0) ? '1' : '0';
    return result;
}

你可以在循环中加入一些模数。

        // little bit of spacing
        if (((bitIndexToTest + 1) % spaceEvery) == 0)
            result += ' ';

你可能会使用或传入一个stringbuilder,并直接追加或索引,以避免释放,也可以绕过+=的使用;

我知道这个答案看起来与这里的大多数答案相似,但我注意到它们几乎都没有使用for循环。这段代码可以工作,并且可以被认为是简单的,因为它不需要任何特殊的函数就可以工作,就像带参数的ToString()一样,而且也不太长。也许有些人更喜欢for-loop而不是while-loop,这可能适合他们。

public static string ByteConvert (int num)
{
    int[] p = new int[8];
    string pa = "";
    for (int ii = 0; ii<= 7;ii = ii +1)
    {
        p[7-ii] = num%2;
        num = num/2;
    }
    for (int ii = 0;ii <= 7; ii = ii + 1)
    {
        pa += p[ii].ToString();
    }
    return pa;
}