Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Conversia unui numar din baza 16 in baza 10

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”

    October 17, 2011 at 11:34 pm
  • 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.

    March 8, 2017 at 12:47 pm

Your email address will not be published. Required fields are marked *

*