Să se transforme un numar natural din baza 16 în baza 10.
Analiza Programului
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)
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(); } } }
Category: Uncategorized
Strings says:
Pentru setul de date: 123ABC, si 123abc nu returneaza aceleasi valori, pentru ca “A” nu are acelasi cod asci ca si “a”
Craciun Radu says:
Salut. Vezi ca la exemplul pe care l-ai dat 86C in baza 16, cand transformi in baza 10 ai 8 x 256 (16 la puterea a 2 a). Rezultatul e ok, 2156.