Как реализовать перевод и 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';
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы