Comment #0 by bearophile_hugs — 2011-12-07T17:38:20Z
Despite what the ddoc of BigInt.toInt() says, it returns a long. I suggest to change toInt() to really return an int:
/// Returns the value of this BigInt as a long,
/// or +- long.max if outside the representable range.
long toLong() pure const
{
return (sign ? -1 : 1) *
(data.ulongLength() == 1 && (data.peekUlong(0) <= cast(ulong)(long.max))
? cast(long)(data.peekUlong(0))
: long.max);
}
/// Returns the value of this BigInt as an int,
/// or +- int.max if outside the representable range.
long toInt() pure const
{
return (sign ? -1 : 1) *
(data.uintLength() == 1 && (data.peekUint(0) <= cast(uint)(int.max))
? cast(int)(data.peekUint(0))
: int.max);
}