[英]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.