我有这个程序在CBC模式下使用DES密钥加密,我需要一个IV:
for(double ii=0;ii<9999999999999999;ii++)
{
String IIV=String.valueOf(ii);
IV=String.valueOf(ii);
for(int x=0;x<(16-IIV.length());x++)
{
IV=("0"+IV);
}
Encrypt.ENC(Secretkey,IV,"Hi");
}
我试图在for循环中使用double和long,我仍然无法将值9999999999999999初始化为ii,因为IV应该是0000000000000000到9999999999999999
答案 0 :(得分:6)
整数文字9999999999999999
太大而无法表示为int
。使用long
字面值,后缀为L
:
for(double ii=0;ii<9999999999999999L;ii++)
顺便说一下,这是一个长循环。这将持续很长时间。
答案 1 :(得分:4)
每秒10,000次迭代,我们谈论大约32,000年来运行该循环。我想你需要重新思考你想要做的事情。
答案 2 :(得分:1)
9999999999999999
需要54位来表示,这超出了32位整数的范围。 Java整数已签名,因此正数必须小于2 ^ 31。您可以使用long
,其正范围为2 ^ 63。
答案 3 :(得分:0)
好的我试过这个:
for(long int i=0;i<((10e16)-1);i++)
它有效