How to convert decimal to binary with large numbers?

0

I'm creating a C # language program to perform conversions right now I'm implementing the binary - > decimal and decimal - > binary.

How can I do the conversion if the user types large numbers how should I handle this?

Buttons

private void Btn_Decimal_Binario_Click(object sender, EventArgs e)
        {
            try
            {
                //Armazena o valor em decimal, convertendo o texto em tipo inteiro
                int ValorDecimal = int.Parse(txt_decimal.Text);

                //Realiza a chamada do metodo e armazena resultado na textbox
                txtBinario.Text = DecimalParaBinario(ValorDecimal);
            }
            catch (Exception)
            {
                MessageBox.Show("Verifique o preenchimento das informações no formulario ! ", "Alerta !", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void Btn_Binario_Decimal_Click(object sender, EventArgs e)
        {
            try
            {
                //Armazena o valor em binario,convertendo o texto em tipo inteiro
                int ValorBinario = int.Parse(txt_Binario_2.Text);

                //Realiza a chamada do metodo e armazena resultado na textbox
                txt_decimal_2.Text = BinarioParaDecimal(ValorBinario);
            }
            catch (Exception)
            {
                MessageBox.Show("Verifique o preenchimento das informações no formulario ! ", "Alerta !", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        } 

Conversions

static string DecimalParaBinario(int n)  
        {
            int resto;
            string result = string.Empty;
            while (n > 0)
            {
                resto = n % 2;
                n /= 2;
                result = resto.ToString() + result;
            }

            return result.ToString();
        }

        static string BinarioParaDecimal(int n)  
        {
            //Conversão Binario em Decimal
            int bin, dec = 0, resto, basenum = 1;
            bin = n;
            while (n > 0)
            {
                resto = n % 10;
                dec = dec + resto * basenum;
                basenum = basenum * 2;
                n = n / 10;
            }
            return dec.ToString();
        }
    
asked by anonymous 02.12.2015 / 12:07

1 answer

1

If you really need this, change the type of the number to BigInteger .

static string DecimalParaBinario(BigInteger n) {
    BigInteger resto;
    var result = "";
    while (n > 0) {
        resto = n % 2;
        n /= 2;
        result = resto.ToString() + result;
    }
    return result.ToString();
}

See working on dotNetFiddle .

Reverse conversion is totally wrong.

    
02.12.2015 / 12:52