Situatie
Pentru a trece un număr din baza 16 în baza 10 se procedează la fel ca la trecerea din baza 2 în baza 10, avându-se în vedere înlocuirea literelor A, B, C, D, E, F cu 10, 11, 12, 13, 14, 15.
Un numar in baza 16 are corespondent in baza 10 un numar egal cu suma produselor dintre fiecare cifra si 16 la exponentul egal cu pozitia pe care se afla cifra in numarul scris in baza 16 (pozitia este calculata de la dreapta la stanga).
86C(16) = 8 x 162 + 6 x 16 + 12 = 2156(10)
Solutie
namespace _29 { class Program { static void Main(string[] args) { Console.WriteLine("Introduceti numarul in sistem hexazecimal"); char[] decimalNumberArray = Console.ReadLine().ToCharArray(); int digit; double pr = 0, sum = 0; int p = 0; //parcurgem vectorul de la ultima la prima cifra for (int i = decimalNumberArray.Length - 1; i >= 0; i--) { //verificam daca este numar if (int.TryParse(decimalNumberArray[i].ToString(), out digit)) { pr = digit * Math.Pow(16, p); } //transformam conform codului ASCII else { if (((char)decimalNumberArray[i] >= 65) && ((char)decimalNumberArray[i] <= 70)) pr = (decimalNumberArray[i] - 55) * Math.Pow(16, p); } p++; sum += pr; } Console.WriteLine(sum.ToString()); Console.ReadLine(); } } }
Leave A Comment?