private BigInteger/*!*/ CastToUnsignedBigInteger(BigInteger/*!*/ value) { return MakeBigIntegerFromByteArray(value.ToByteArray()); }
private BigInteger/*!*/ GenerateMask(BigInteger/*!*/ value) { byte[] bytes = new byte[value.ToByteArray().Length]; for (int i = 0; i < bytes.Length; i++) { bytes[i] = 0xFF; } return MakeBigIntegerFromByteArray(bytes); }
public static int Bit(BigInteger/*!*/ self, [DefaultProtocol]int index) { // If we are outside the range then return 0 ... if (index < 0) return 0; int bytePos = index / 8; int bitOffset = index % 8; byte[] data = self.ToByteArray(); // ... or 1 if the index is too high and BigInteger is negative. if (bytePos >= data.Length) return (self.Sign > 0) ? 0 : 1; return (data[bytePos] & (1 << bitOffset)) != 0 ? 1 : 0; }