6

要检查一些银行帐号,我想对帐号进行模 97。但是很多帐号在一个 UInt64 中输入太大了。

如何对 24 位整数进行运算?

谢谢,

示例代码(它不能转换):

(Convert.ToUInt64("756842356987456214536254") % 97 == 1);
4

4 回答 4

9

一种方法是使用System.Numeric's BigInteger

BigInteger bi = BigInteger.Parse("756842356987456214536254");
于 2012-11-22T08:55:06.183 回答
1

谢谢,

这是工作。

Org.BouncyCastle.Math.BigInteger bi = new BigInteger("756842356987456214536254");

(Convert.ToInt32(bi.Mod(new BigInteger("97")).ToString()) == 1);
于 2012-11-22T09:11:12.293 回答
0

如果数字最多为 28 位,您也可以使用decimal. 这可能比使用更方便BigInteger

于 2012-11-22T09:53:01.743 回答
-1

如果输入是文本,那么获取字符串并使用Encoding.GetBytes 方法可能会更容易,因此您可以获得一个可以传递给BigInteger 构造函数的字节数组,如下例所示:

var enc = new System.Text.UTF8Encoding();
var bi = new BigInteger(enc.GetBytes("756842356987456214536254"));
var result = (bi % 97).ToString();
于 2013-08-23T12:02:10.353 回答