Перевод из десятичной с.с. в шестнадцатиричную - 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);
}