Conversia unui numar din baza 16 in baza 10

Configurare noua (How To)

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();
        }
    }
}

Tip solutie

Permanent

Voteaza

(19 din 51 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?