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。
为什么内存超出范围?
或者我的代码是不正确的?
答案 0 :(得分:0)
你可能超出了int的长度。 java中的整数是32位,二进制字符串是91位。
尝试使用类似BigInteger
的内容,但不会溢出。事实上,BigInteger
有一个内置的方法:
BigInteger result = new BigInteger(a, 2);