Как реализовать перевод и 8 и 16-ричной сс в 2 и обратно, не используя существующих функций? - C#
Формулировка задачи:
подскажите: как реализовать перевод и 8 и 16-ричной сс в 2 и обратно, не используя существующих функций? на консоли
Решение задачи: «Как реализовать перевод и 8 и 16-ричной сс в 2 и обратно, не используя существующих функций?»
textual
Листинг программы
using System; using System.Text; namespace ConsoleApplication { class Program { static void Main() { while (true) { Console.WriteLine("Введите число, систему счисления, конечную систему(Например: 13 8 2):"); string command = Console.ReadLine(); if (command == "exit") return; string[] strs = command.Split(' '); if (strs.Length != 3) return; var system = Convert.ToInt32(strs[1]); var systemResult = Convert.ToInt32(strs[2]); var number = strs[0]; Console.WriteLine("Результат: {0}", SystemConvert(number.ToLowerInvariant(), system, systemResult)); } } static string SystemConvert(string number, int from, int to) { int normalNumber = To10System(number, from); int rest = normalNumber; var resStringBuilder = new StringBuilder(); while (rest >= to) { int num = rest / to; int numRest = rest % to; resStringBuilder.Append(numRest); rest = num; } resStringBuilder.Append(rest); return resStringBuilder.ToString().ReverseString(); } static int To10System(string number, int from) { int result = 0; for (int i = 0; i < number.Length; ++i) { result += CharToInt(number[i]) * (int)Math.Pow(from, number.Length - i - 1); } return result; } static int CharToInt(char c) { if (c.IsNumeric()) return c - '0'; return c - 'a' + 10; } } public static class Extensions { public static string ReverseString(this string str) { char[] charArray = str.ToCharArray(); Array.Reverse(charArray); return new string(charArray); } public static bool IsNumeric(this char chr) { return chr >= '0' && chr <= '9'; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д