52 lines
892 B
C#
52 lines
892 B
C#
using System;
|
|
using System.CodeDom;
|
|
using System.Dynamic;
|
|
using sharp.extensions;
|
|
namespace BigInt
|
|
{
|
|
public abstract class IntBase
|
|
{
|
|
protected UInt32[] rawValue;
|
|
|
|
public UInt32[] RawValue
|
|
{
|
|
get { return this.rawValue; }
|
|
protected set
|
|
{
|
|
this.rawValue = value;
|
|
}
|
|
}
|
|
|
|
public byte[] getBytes()
|
|
{
|
|
byte[] b = new byte[this.RawValue.Length << 2];
|
|
for (int n = 0; n < this.RawValue.Length; n++)
|
|
{
|
|
b.Insert(this.RawValue[n].GetBytes(), n << 2);
|
|
}
|
|
return b;
|
|
}
|
|
|
|
public bool this[int bit]
|
|
{
|
|
get { return ((this.RawValue[bit >> 5] & (1 << (bit & 0x1F))) != 0); }
|
|
}
|
|
|
|
public bool isZero(){
|
|
return BigIntMath.isZero(rawValue);
|
|
}
|
|
|
|
public string toHexString()
|
|
{
|
|
return getBytes().Reverse().toHexString();
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return String.Format("[{0}: {1}]",this.GetType().Name,toHexString());
|
|
}
|
|
|
|
}
|
|
|
|
}
|