要检查一些银行帐号,我想对帐号进行模 97。但是很多帐号在一个 UInt64 中输入太大了。
如何对 24 位整数进行运算?
谢谢,
示例代码(它不能转换):
(Convert.ToUInt64("756842356987456214536254") % 97 == 1);
要检查一些银行帐号,我想对帐号进行模 97。但是很多帐号在一个 UInt64 中输入太大了。
如何对 24 位整数进行运算?
谢谢,
示例代码(它不能转换):
(Convert.ToUInt64("756842356987456214536254") % 97 == 1);
一种方法是使用System.Numeric
's BigInteger
:
BigInteger bi = BigInteger.Parse("756842356987456214536254");
谢谢,
这是工作。
Org.BouncyCastle.Math.BigInteger bi = new BigInteger("756842356987456214536254");
(Convert.ToInt32(bi.Mod(new BigInteger("97")).ToString()) == 1);
如果数字最多为 28 位,您也可以使用decimal
. 这可能比使用更方便BigInteger
。
如果输入是文本,那么获取字符串并使用Encoding.GetBytes 方法可能会更容易,因此您可以获得一个可以传递给BigInteger 构造函数的字节数组,如下例所示:
var enc = new System.Text.UTF8Encoding();
var bi = new BigInteger(enc.GetBytes("756842356987456214536254"));
var result = (bi % 97).ToString();