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
我正在尝试使用 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