[C#] C #에서 정수를 이진수로 변환

정수를 이진 표현으로 변환하는 방법은 무엇입니까?

이 코드를 사용하고 있습니다 :

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

그러나 예외가 발생합니다.

구문 분석 가능한 숫자를 찾을 수 없습니다



답변

예제에는 문자열로 표현 된 정수가 있습니다. 정수가 실제로 정수라고 가정하면 정수를 가져 와서 이진 문자열로 변환하려고합니다.

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

1000을 반환합니다.


답변

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입니다.


답변

추가 코드없이 입력, 변환 및 출력만으로 매우 간단합니다.

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


답변

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


답변

원시적 인 방법 :

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

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

    return ToBinary(divisor) + remainder;
}


답변

Convert.ToInt32(string, base)기본으로 기본 변환을 수행하지 않습니다. 문자열에 표시된 기본에 유효한 숫자가 포함되어 있고 기본 10으로 변환한다고 가정합니다.

따라서 “8”은 밑이 2 인 유효한 숫자가 아니기 때문에 오류가 발생합니다.

String str = "1111";
String Ans = Convert.ToInt32(str, 2).ToString();

보여줄 것이다 15(1111 base 2 = 15 base 10)

String str = "f000";
String Ans = Convert.ToInt32(str, 16).ToString();

표시 61440합니다.


답변

나는이 답변이 이미 여기에있는 대부분의 답변과 비슷하다는 것을 알고 있지만 그중 어느 것도 for-loop를 사용하지 않는다는 것을 알았습니다. 이 코드는 매개 변수가있는 ToString ()과 같은 특수 함수없이 작동하며 너무 길지 않다는 점에서 간단하게 간주 될 수 있습니다. 어쩌면 일부는 while 루프 대신 for 루프를 선호 할 수도 있습니다.

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