Ejemplo n.º 1
0
        private static List <byte> BinaryNumberString(LargeNumber largeNumber)
        {
            if (largeNumber == 1)
            {
                return new List <byte> {
                           1
                }
            }
            ;
            if (largeNumber == 0)
            {
                return new List <byte> {
                           0
                }
            }
            ;

            var numbers = new Stack <LargeNumber>();

            var aux = new LargeNumber(1);
            var i   = new LargeNumber(1);

            while (aux <= largeNumber)
            {
                i = aux;

                numbers.Push(i);

                aux *= 2;
            }

            var number = new List <byte>();

            while (numbers.Any())
            {
                var num = numbers.Pop();

                if (num <= largeNumber)
                {
                    largeNumber -= num;
                    number.Add(1);
                }
                else
                {
                    number.Add(0);
                }
            }

            return(number);
        }
Ejemplo n.º 2
0
        public LargeNumber ToLargeNumber()
        {
            var largeNumber = new LargeNumber(0);
            var mult        = new LargeNumber(1);

            for (int i = _binary.Count - 1; i >= 0; i--)
            {
                if (_binary[i] == 1)
                {
                    largeNumber += mult;
                }
                mult *= 2;
            }

            return(largeNumber);
        }
Ejemplo n.º 3
0
 public BinaryNumber(LargeNumber largeNumber)
 {
     _binary = BinaryNumberString(largeNumber);
 }