无法使用9999999999999999值

时间:2014-04-03 23:05:02

标签: java long-integer

我有这个程序在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

4 个答案:

答案 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++)

它有效