Перевод из 16-ричной в 2-ичную систему счисления - C#
Формулировка задачи:
Доброго времени суток. Помогите написать консольное приложение на с#. Перевод числа из 16-ричной сс в 2-ичную. Только вся проблема в том, что при решении нельзя использовать метод Convert. Надумал решение, берем число в 16 сс и пихаем его в массив, затем достаем каждый элемент сравниваем со значениями по готовой таблице перевода 16 в 2 сс и присваеваем каждому элементу массива свое значение. То есть если у нас число D7, '7' - присваеваем 0111 а 'D' - 1101. В теории все работает а на практике ни черта не получается. И как запихать в массив все элементы одной строкой? Не вводить каждый элемент по отдельности. Может у кого есть другие пути решения? Спасибо
Решение задачи: «Перевод из 16-ричной в 2-ичную систему счисления»
textual
Листинг программы
- var d = new Dictionary<string, string>(StringComparer.CurrentCultureIgnoreCase)
- {
- { "0", "0000" },
- { "1", "0001" },
- { "2", "0010" },
- { "3", "0011" },
- { "4", "0100" },
- { "5", "0101" },
- { "6", "0110" },
- { "7", "0111" },
- { "8", "1000" },
- { "9", "1001" },
- { "a", "1010" },
- { "b", "1011" },
- { "c", "1100" },
- { "d", "1101" },
- { "e", "1110" },
- { "f", "1111" }
- };
- var number = "123AbC"; // Console.ReadLine()
- var digits = number.Select(c => d[c.ToString()]).SelectMany(c => c).SkipWhile(c => c == '0');
- var newNumber = string.Join("", digits);
- if (newNumber == "") newNumber = "0";
- Console.WriteLine("{0}(16) = {1}(2)", number, newNumber);
- Console.ReadLine();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д