예제 #1
0
        /// <summary>
        /// Convierte un numero binario a decimal.
        /// </summary>
        /// <param name="binario"></param>
        /// <returns>Retorna el binario en Decimal como string</returns>
        public string BinarioDecimal(string binario)
        {
            bool esBinario;
            //StringBuilder retorno = new StringBuilder();
            string retorno = "";

            esBinario = EsBinario(binario);
            if (esBinario)
            {
                double        entero = 0;
                int           potencia;
                double        acumulador      = 0;
                double        potenciaBaseDos = 1;
                int           potenciada      = (int)potenciaBaseDos * 2;
                int           enNumero;
                StringBuilder convertida = new StringBuilder();
                //Doy vuelta el número binario asi comienzo desde el principio a "potenciar".
                convertida.AppendFormat(Numero.Invertir(binario));
                entero = double.Parse(convertida.ToString());
                for (int i = 0; i < convertida.Length; i++)
                {
                    //Todas las potencias de 2.
                    potencia = (int)(Math.Pow(2, i));
                    //Obtengo el Char de la stringbuilder convertida.
                    char intEnChar = convertida[i];
                    //parseo el char a un entero.
                    enNumero = int.Parse(intEnChar.ToString());
                    //Acumulo el valor del numero decimal.
                    acumulador += enNumero * potencia;
                }
                Console.WriteLine(acumulador);

                retorno += acumulador.ToString();
            }
            else
            {
                retorno = "Valor inválido";
            }

            return(retorno);
        }