У меня есть метод BigInteger
, который принимает вход массива string[]
из 4 чисел, преобразует числа в int[]
и затем применяет к нему множество математических операций.Математические функции BigInteger, не возвращающие ожидаемые значения
public BigInteger convert32Bit(String[] array)
{
System.out.println("Array being converted is "+Arrays.toString(array)+"\n");
int[] tempArray = new int[array.length];
ArrayList<BigInteger> tempBigIntList = new ArrayList<BigInteger>();
int i = 0;
for(String s:array)
{
int power = 4-i;
tempArray[i]= Integer.parseInt(s);
String string = Integer.toString(tempArray[0]);
BigInteger myBigInt = new BigInteger(string);
BigInteger num2 = myBigInt.multiply(new BigInteger("256").pow(power));
System.out.println(tempArray[i]+" is being multiplied by 256^"+power+" which equals "+num2);
tempBigIntList.add(num2);
i++;
}
BigInteger bigInt32Bit = new BigInteger("0");
for(BigInteger bI:tempBigIntList)
{
bigInt32Bit.add(bI);
}
System.out.println("\nThe final value is "+bigInt32Bit);
return bigInt32Bit;
}
Однако есть проблемы. Если я возьму массив "123", "0", "245", "23"
в качестве входа. Я получаю следующий вывод.
Выход я ожидаю это
Array being converted is [123, 0, 245, 23]
123 is being multiplied by 256^4 which equals 528280977408
0 is being multiplied by 256^3 which equals 0
245 is being multiplied by 256^2 which equals 16056320
23 is being multiplied by 256^1 which equals 5888
The final value is 528297039616
Может кто-то пожалуйста, помогите исправить это?
В вашей петле ваша строка 'String = Integer.toString (tempArray [0]);' должна быть 'tempArray [i]' – justhalf
@justhalf Спасибо. Это определило проблему разработки значений – Dan
Почему закрытые голоса? – Dan