Org.BouncyCastle.Math.BigInteger.BigInteger C# (CSharp) Method

BigInteger() public method

public BigInteger ( byte bytes, int offset, int length ) : System
bytes byte
offset int
length int
return System
		public BigInteger(
			byte[]	bytes,
			int		offset,
			int		length)
		{
			if (length == 0)
				throw new FormatException("Zero length BigInteger");

			// TODO Move this processing into MakeMagnitude (provide sign argument)
			if ((sbyte)bytes[offset] < 0)
			{
				this.sign = -1;

				int end = offset + length;

				int iBval;
				// strip leading sign bytes
				for (iBval = offset; iBval < end && ((sbyte)bytes[iBval] == -1); iBval++)
				{
				}

				if (iBval >= end)
				{
					this.magnitude = One.magnitude;
				}
				else
				{
					int numBytes = end - iBval;
					byte[] inverse = new byte[numBytes];

					int index = 0;
					while (index < numBytes)
					{
						inverse[index++] = (byte)~bytes[iBval++];
					}

					Debug.Assert(iBval == end);

					while (inverse[--index] == byte.MaxValue)
					{
						inverse[index] = byte.MinValue;
					}

					inverse[index]++;

					this.magnitude = MakeMagnitude(inverse, 0, inverse.Length);
				}
			}
			else
			{
				// strip leading zero bytes and return magnitude bytes
				this.magnitude = MakeMagnitude(bytes, offset, length);
				this.sign = this.magnitude.Length > 0 ? 1 : 0;
			}
		}

Same methods

BigInteger::BigInteger ( ) : System
BigInteger::BigInteger ( byte bytes ) : System
BigInteger::BigInteger ( int sizeInBits, Random random ) : System
BigInteger::BigInteger ( int sign, byte bytes ) : System
BigInteger::BigInteger ( int sign, byte bytes, int offset, int length ) : System
BigInteger::BigInteger ( int bitLength, int certainty, Random random ) : System
BigInteger::BigInteger ( int signum, int mag, bool checkMag ) : System
BigInteger::BigInteger ( string value ) : System
BigInteger::BigInteger ( string str, int radix ) : System