Java BigInteger 到 intValue

Java BigInteger to the intValue

我正在尝试使用 Java 代码练习 'Affine Cipher'。我尝试在 BigInteger class 中使用 modInverse() 函数。我必须在 modInverse 函数中放入一些整数值。因此,我使用 BigInteger.valueOf(Integer) 来获取整数的 ModInverse。但是问题出现在这里,当我试图将 BigInteger 值更改为整数时,它给我一个错误“无法从 BigInteger 类型对非静态方法 modInverse(BigInteger) 进行静态引用。我应该如何修复问题?

这是我的代码:

for(int a = 1; a<=25;a++)
        {
            for(int b = 0; b<=26; b++)
            {
                for(int i  =0; i < cipherText.length;i++)
                {
                    cipherText[i] = (byte) ( ((cipherText[i]-'A')-b)* (BigInteger.modInverse(BigInteger.valueOf(a)).intValue() % 26 + 'A' );
                }
            }
        }

BigInteger 是 class 名称。当您执行 BigInteger.someMethod 时,您假设 someMethod 是一个 static 方法。在这种情况下不是。这是一个 instance 方法,因此您需要 BigInteger class 的实例才能使用它。这是一个使用互质数 b and c 的示例。

BigInteger b = BigInteger.valueOf(33);
BigInteger c = BigInteger.valueOf(14);
int v = b.mod(c).intValue();
System.out.println(v);
v = c.modInverse(b).intValue();
System.out.println(v);

版画

5
26