¿Como hacer para que el usuario pueda escribir una Letra de hexadecimal en C# y que la computadora reconozca el valor?

Tengo un problema que dice lo siguiente:

Elabore un programa que permita convertir un numero hexadecimal de 2 dígitos a decimal. Solicite el primer dígito hexadecimal y luego el segundo dígito hexadecimal. Debe permitir mayúsculas y minúsculas.

Y ya realice un programa que se acomoda similar a lo ya escrito:

using System; namespace TareadVaca4 { class Program { static void Main(string[] args) { int A; int B; int C; int D; int E; int F; int a; int b; int c; int d; int e; int f; int n1; int n2; int suma; string dato; A = 10; B = 11; C = 12; D = 13; E = 14; F = 15; a = 10; b = 11; c = 12; d = 13; e = 14; f = 15; while (1 == 1) { Console.Write("Ingrese el primer digito hexadecimal "); dato = Console.ReadLine(); n1 = Convert.ToInt32(dato); Console.Write("Ingrese el segundo digito hexadecimal "); dato = Console.ReadLine(); n2 = Convert.ToInt32(dato); if (n1 >= 0 && n1 <= 9 || n2 >= 0 && n2 <= 9|| n1==A || n1 ==B || n1 == C || n1 == D || n1 == E || n1 == F || n1 == a || n1 == b || n1 == c || n1 == d || n1 == e || n1 == f || n2 == A || n2 == B || n2 == C || n2 == D || n2 == E || n2 == F || n2 == a || n2 == b || n2 == c || n2 == d || n2 == e || n2 == f) break; } n2 = 16 * n2; suma = n1 + n2; Console.WriteLine("El numero Hexadecimal convertido a decimal es {0}", suma); } } }

Pero al momento que me piden "n1" y yo escribo una letra C# no le da ningun valor hay alguna forma de hacer que C# lea el valor de la variable o alguna otra situación?

1 respuesta

Respuesta
1

Primero piensa cómo realizarías esta operación aritméticamente.

Por ejemplo si queremos pasar el número hexadecimal A1 a decimal haríamos:

A*16^1+1=10*16+1=161

B5

B*16+5=11*16+5=177

Por tanto tienes dos variables que correspoden a los dos números hexadecimales. El primer número que escribes n1 puede ser la primera cifra y n2 la segunda cifra.

No es necesario declarar más variables que n1, n2, la suma y la cadena que pides en la cónsola

Después de pedir el valor tienes que cambiar una posible letra por su valor por. Hazlo con un switch

switch(dato){

case "A": dato="10";

break;

case "B": dato="11";

break;

...

}

Ahora transforma la cadena a numérico y la asignas a la variable n1

n1=Int16.Parse(dato);

Haz lo mismo con n2

Una vez tienes n1 y n2 con valor numérico ejecuta la operación aritmética

suma= n1*16+n2

Y ya tienes el resultado.

Se me olvidó decirte que para que no importe si el usuario escribe mayúscula o minúscula antes del switch transforma el valor a mayúscula.

dato=dato.ToUpper();

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas