Consider the following code:
ulong max = ulong.MaxValue;
byte[] maxBytes = BitConverter.GetBytes(max);
BigInteger a = new BigInteger(max);
BigInteger b = new BigInteger(maxBytes);
Console.WriteLine(a); // 18446744073709551615
Console.WriteLine(b); // -1
Why doesn't creating an instance of BigInteger from a byte[] representation of ulong.MaxValue produce the expected result (18446744073709551615)?