Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Write a program to convert from any numeral system of given base s to any other numeral system of base d (2 ≤ s, d ≤ 16).
- using System;
- using System.Collections.Generic;
- using System.Numerics;
- class ConvertFromAnyToAnyNumSystem
- {
- static void Main()
- {
- Console.Write("What numeral system will be your entered number (choose from 2 to 16): ");
- int defaultNumericSystem = int.Parse(Console.ReadLine());
- Console.Write("OK! Now write your number in \"{0}\" numeral system: ", defaultNumericSystem);
- string number = Console.ReadLine();
- Console.Write("Now choose to which numeral system you want to convert it (from 2 to 16) ?: ");
- int wantedSystem = int.Parse(Console.ReadLine());
- string decimalResult = AnyNumeralSystemToDecimal(number, defaultNumericSystem);
- string result = ConvertDecimalToAnyOther(decimalResult, wantedSystem);
- Console.WriteLine("The number {0} in \"{1}\" numeral system is = {2}\n", number, wantedSystem, result);
- }
- static string AnyNumeralSystemToDecimal(string number, int choise)
- {
- int[] numberDigits = new int[number.Length];
- string[] hexDigitsAfterTen = { "A", "B", "C", "D", "E", "F", };
- if (choise <= 9)
- {
- for (int i = 0; i < number.Length; i++)
- {
- numberDigits[i] = (char)(char.GetNumericValue(number[i]));
- }
- }
- else
- {
- for (int i = 0; i < number.Length; i++)
- {
- if (number[i] == 'A' || number[i] == 'a')
- {
- numberDigits[i] = 10;
- }
- else if (number[i] == 'B' || number[i] == 'b')
- {
- numberDigits[i] = 11;
- }
- else if (number[i] == 'C' || number[i] == 'c')
- {
- numberDigits[i] = 12;
- }
- else if (number[i] == 'D' || number[i] == 'd')
- {
- numberDigits[i] = 13;
- }
- else if (number[i] == 'E' || number[i] == 'e')
- {
- numberDigits[i] = 14;
- }
- else if (number[i] == 'F' || number[i] == 'f')
- {
- numberDigits[i] = 15;
- }
- else
- {
- numberDigits[i] = (char)char.GetNumericValue(number[i]);
- }
- }
- }
- Array.Reverse(numberDigits);
- int holder = 0;
- int result = 0;
- for (int i = 0; i < numberDigits.Length; i++)
- {
- holder = numberDigits[i] * ((int)Math.Pow(choise, i));
- result += holder;
- }
- return result.ToString();
- }
- static string ConvertDecimalToAnyOther(string decimalNumber, int secondChoise)
- {
- BigInteger decimalNumberConverted = BigInteger.Parse(decimalNumber);
- List<string> convertedNumber = new List<string>();
- int remainder = 0;
- if (secondChoise <= 9)
- {
- while (decimalNumberConverted != 0)
- {
- remainder = (int)(decimalNumberConverted % secondChoise);
- decimalNumberConverted = decimalNumberConverted / secondChoise;
- convertedNumber.Add(remainder.ToString());
- if (decimalNumberConverted == 0)
- {
- break;
- }
- }
- convertedNumber.Reverse();
- string result = "";
- for (int i = 0; i < convertedNumber.Count; i++)
- {
- result += convertedNumber[i];
- }
- return result;
- }
- else
- {
- int[] hexNumbersAfterTen = { 10, 11, 12, 13, 14, 15 };
- List<string> result = new List<string>();
- int holder = 0;
- for (int i = 0; i < decimalNumber.Length; i++)
- {
- holder = (int)(decimalNumberConverted % secondChoise);
- result.Add(holder.ToString());
- decimalNumberConverted /= 16;
- if (holder > 9)
- {
- if (result[i] == "10")
- {
- result[i] = "A";
- }
- else if (result[i] == "11")
- {
- result[i] = "B";
- }
- else if (result[i] == "12")
- {
- result[i] = "C";
- }
- else if (result[i] == "13")
- {
- result[i] = "D";
- }
- else if (result[i] == "14")
- {
- result[i] = "E";
- }
- else if (result[i] == "15")
- {
- result[i] = "F";
- }
- }
- }
- result.Reverse();
- decimalNumber = "";
- for (int i = 0; i < result.Count; i++)
- {
- decimalNumber += result[i];
- }
- return decimalNumber;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement