Си диез / Говнокод #27089 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
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;
        }

Пероевод в системы счисления

Запостил: techlead_seneor_228 techlead_seneor_228, (Updated )

Комментарии (11) RSS

  • Я тебя услышал. Теперь смотрим, как это делается на языке для белых:
    $number=base_convert($number, 10, 2);
    Ответить
  • Во-первых, тип long хранит данные в двоичной системе счисления. Что за пиздец получается в результате работы этого метода - одному Богу известно.
    Если требуется хранить представление числа в другой системе счисления (в том числе десятичной) - используется string или на худой конец массив. А лучше всего написать класс обёртку, которое будет внутри себя хранить значение числа и его базу, и переопределить в этом классе метод ToString().

    Во-вторых, работы со строковым представлением числа с базой отличающейся от 10 в C# есть методы Convert.ToInt64(text, base) и Convert.ToString(number, base)
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8