我正在编写BigInteger类型的对象接口,它接受int作为参数。到目前为止,这种情况运作良好,但有一个例外令我担忧。从BigInteger转换为int是否安全?我知道向相反的方向前进是好的,但是如果我试图降频转换的BigInt大于int的范围,似乎会出现严重的问题。但是,我需要在我的界面中构建一些功能来实现这一点。这里有什么明智的?我该怎么办?
答案 0 :(得分:2)
将BigInteger转换为int绝对不安全,因为您容易受到overflow的攻击。</ p>
为了解决这个问题,您必须设置一个条件,以确保您不会在整数范围之外转换BigIntegers,这是:
Integer.MAX_VALUE = 2147483647
Integer.MIN_VALUE = -2147483648
你可以考虑是否足够长时间使用。它具有明显更广泛的界限:
Long.MAX_VALUE = 9223372036854775807
Long.MIN_VALUE = -9223372036854775808
答案 1 :(得分:0)
你想要的方法是BigInteger #valueOf(long val)。
如,
BigInteger bi = BigInteger.valueOf(myInteger.intValue());
首先制作字符串是不必要的,也是不受欢迎的。