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); }
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); }
public BinaryNumber(LargeNumber largeNumber) { _binary = BinaryNumberString(largeNumber); }