[英]Why is it returning a negative value for a very long binary string?
public long bin_to_dec() {
int leng = a.length();
for (int i = 0, j = (leng - 1); i < leng; i++, j--) {
int number = Character.getNumericValue(a.charAt(j));
result = result + (number * ((long) Math.pow(2, i)));
}
return result;
}
此代码将二进制字符串作为参数,并返回其十进制值。
但对于一个长字符串,即
(111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111)
它返回-28。
为什么内存超出范围? 还是我的代码不正确?
您可能超出了int的长度。 Java中的整数是32位,而二进制字符串是91位。
尝试改用BigInteger
东西,它不会溢出。 实际上, BigInteger
为此提供了一个内置方法:
BigInteger result = new BigInteger(a, 2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.