Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
public static long ToNotation(int n, int notation)
{
var result = 0;
var values = new Stack<int>();
if (notation == n)
return n;
if (notation > n)
return 0;
while (n / notation > 0)
{
values.Push(n % notation);
n /= notation;
}
values.Push(n);
int offset = 1;
var Array = values.ToArray();
for (int i = Array.Length - 1; i >= 0; i--)
{
result += Array[i] * offset;
offset *= 10;
}
return result;
}
Во-первых, тип long хранит данные в двоичной системе счисления. Что за пиздец получается в результате работы этого метода - одному Богу известно.
Если требуется хранить представление числа в другой системе счисления (в том числе десятичной) - используется string или на худой конец массив. А лучше всего написать класс обёртку, которое будет внутри себя хранить значение числа и его базу, и переопределить в этом классе метод ToString().
Во-вторых, работы со строковым представлением числа с базой отличающейся от 10 в C# есть методы Convert.ToInt64(text, base) и Convert.ToString(number, base)
Если требуется хранить представление числа в другой системе счисления (в том числе десятичной) - используется string или на худой конец массив. А лучше всего написать класс обёртку, которое будет внутри себя хранить значение числа и его базу, и переопределить в этом классе метод ToString().
Во-вторых, работы со строковым представлением числа с базой отличающейся от 10 в C# есть методы Convert.ToInt64(text, base) и Convert.ToString(number, base)