在C#中将整数转换为二进制

Tho*_*eld 170 c#

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

我正在使用此代码:

String input = "8";
String output = Convert.ToInt32(input, 2).ToString();
Run Code Online (Sandbox Code Playgroud)

但它引发了一个例外:

找不到任何可解析的数字

Ant*_*ram 316

您的示例有一个表示为字符串的整数.假设你的整数实际上是一个整数,你想取整数并将其转换为二进制字符串.

int value = 8;
string binary = Convert.ToString(value, 2);
Run Code Online (Sandbox Code Playgroud)

哪个返回1000.

  • @kashif`int value = Convert.ToInt32("1101",2)`将给'value`赋值13. (23认同)
  • @Xonatron:https://learn.microsoft.com/en-us/dotnet/api/system.convert.tostring?view=net-5.0#System_Convert_ToString_System_Int32_System_Int32_ (2认同)

sri*_*mak 43

从任何经典基数转换为C#中的任何基数

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

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

// result == "256"
Run Code Online (Sandbox Code Playgroud)

支持的碱基为2,8,10和16

  • 是的,来自MSDN:只支持经典基础http://msdn.microsoft.com/en-us/library/8s62fh68(v=vs.110).aspx toBase类型:System.Int32返回值的基数,必须是2,8,10或16. (4认同)
  • 这是行不通的。我只是尝试了 `string binary = Convert.ToString(533, 26);` 并得到了一个 ArgumentException: Invalid base (2认同)

小智 35

非常简单,无需额外代码,只需输入,转换和输出.

using System;

namespace _01.Decimal_to_Binary
{
    class DecimalToBinary
    {
        static void Main(string[] args)
        {
            Console.Write("Decimal: ");
            int decimalNumber = int.Parse(Console.ReadLine());

            int remainder;
            string result = string.Empty;
            while (decimalNumber > 0)
            {
                remainder = decimalNumber % 2;
                decimalNumber /= 2;
                result = remainder.ToString() + result;
            }
            Console.WriteLine("Binary:  {0}",result);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 12

http://zamirsblog.blogspot.com/2011/10/convert-decimal-to-binary-in-c.html

    public string DecimalToBinary(string data)
    {
        string result = string.Empty;
        int rem = 0;
        try
        {
            if (!IsNumeric(data))
                error = "Invalid Value - This is not a numeric value";
            else
            {
                int num = int.Parse(data);
                while (num > 0)
                {
                    rem = num % 2;
                    num = num / 2;
                    result = rem.ToString() + result;
                }
            }
        }
        catch (Exception ex)
        {
            error = ex.Message;
        }
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

  • 他在氙气之前回答了这个问题 (5认同)
  • 不确定这与氙气的答案有何不同. (2认同)

Dan*_*l B 8

原始方式:

public string ToBinary(int n)
{
    if (n < 2) return n.ToString();

    var divisor = n / 2;
    var remainder = n % 2;

    return ToBinary(divisor) + remainder;
}
Run Code Online (Sandbox Code Playgroud)

  • 因否定而失败,但无论如何我还是投了赞成票,因为这是一个有趣的答案。 (2认同)

San*_*yev 8

使用Enumerable和 的另一种替代但也是内联解决方案LINQ是:

int number = 25;
    
string binary = Enumerable.Range(0, (int)Math.Log(number, 2) + 1).Aggregate(string.Empty, (collected, bitshifts) => ((number >> bitshifts) & 1 ) + collected);
Run Code Online (Sandbox Code Playgroud)

  • 感谢您发现我的代码:)但正如您所见,从性能角度来看这是一个笑话 (2认同)

egr*_*nin 5

Convert.ToInt32(string, base)没有基地转换到您的基地.它假定字符串在指定的基数中包含有效数字,并转换为基数10.

因此,您收到错误,因为"8"不是基数2中的有效数字.

String str = "1111";
String Ans = Convert.ToInt32(str, 2).ToString();
Run Code Online (Sandbox Code Playgroud)

将显示15(1111 base 2 = 15 base 10)

String str = "f000";
String Ans = Convert.ToInt32(str, 16).ToString();
Run Code Online (Sandbox Code Playgroud)

会显示61440.


小智 5

    static void convertToBinary(int n)
    {
        Stack<int> stack = new Stack<int>();
        stack.Push(n);
        // step 1 : Push the element on the stack
        while (n > 1)
        {
            n = n / 2;
            stack.Push(n);
        }

        // step 2 : Pop the element and print the value
        foreach(var val in stack)
        {
            Console.Write(val % 2);
        }
     }
Run Code Online (Sandbox Code Playgroud)