Перевод из десятичной с.с. в шестнадцатиричную - C#
Формулировка задачи:
Написать метод, входным параметром которого является целое число. Метод должен вернуть строку, содержащую символьную запись числа в шестнадцатиричной системе счисления.
Собственно это условие! - как это сделать не понимаю.
Знаю что числа меньше 9 не меняются, а все что > должно записываться числами 10 = А, 11 = B, 12 = C, 13 = D,
14 = E, 15 = F
Вот что удалось мне сделать: но оно не соответствует условию, и можно сделать намного проще но моих познаний не хватает для того чтобы это реализовать .
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; { class Program { static string[] chislo(int n) { int i; int b; int q; string[] s = new string[20]; for (i = 0; n > 0; i++) { b = n; n = n / 16; q = b - n * 16; if (q > 9) { if (q == 10) { s[i] = "A"; continue; } if (q == 11) { s[i] = "B"; continue; } if (q == 12) { s[i] = "C"; continue; } if (q == 13) { s[i] = "D"; continue; } if (q == 14) { s[i] = "E"; continue; } if (q == 15) s[i] = "F"; } else { s[i] = Convert.ToString(q); } } for (i = i - 1; i >= 0; i--) { Console.Write(s[i]); } return s; } static void Main() { int a = int.Parse(Console.ReadLine()); chislo(a); Console.ReadKey(); } } }
Решение задачи: «Перевод из десятичной с.с. в шестнадцатиричную»
textual
Листинг программы
string ToBase(int value, int @base) { if (value < 0) throw new ArgumentOutOfRangeException("value"); if (@base < 2 || @base > 36) throw new ArgumentOutOfRangeException("base"); if (value < 2) return value.ToString(); char[] chars = new char[(int)Math.Log(value, @base) + 1]; int rem; for (int i = chars.Length - 1; i >= 0; i--) { value = Math.DivRem(value, @base, out rem); chars[i] = (char)(rem + (rem < 10 ? '0' : 'A' - 10)); } return new string(chars); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д