BigInteger数学函数未返回期望值

我有一个BigInteger方法,方法需要string[]输入4个数字数组int[],然后将数字转换为,然后对其进行大量数学运算。

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

有人可以帮忙解决此问题吗?

塔吉尔·瓦列夫

替换此行

bigInt32Bit.add(bI);

bigInt32Bit = bigInt32Bit.add(bI);

您这样做BigInteger因为它不可变的这意味着您必须为其创建一个新值,bigInt32Bit而不仅仅是调整旧也(如@justhalf所说)替换行

String string = Integer.toString(tempArray[0]);

String string = Integer.toString(tempArray[i]);

以便在应用数学运算符时使用正确的值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

math.h中的函数未返回期望值

来自分类Dev

Spock存根未返回期望值

来自分类Dev

COUNTIF公式未返回期望值

来自分类Dev

Ruby命令未返回期望值

来自分类Dev

具有日期条件的SQL窗口函数未返回期望值

来自分类Dev

Redshift中的REGEXP_SUBSTR函数未返回期望值

来自分类Dev

在一种特定情况下,函数未返回期望值

来自分类Dev

date.getTimezoneOffset()未返回期望值

来自分类Dev

Mock上的设置未返回期望值

来自分类Dev

正则表达式未返回期望值

来自分类Dev

日期时间转换未返回期望值

来自分类Dev

Hibernate搜索通配符未返回期望值

来自分类Dev

字符串数组未返回期望值

来自分类Dev

DATEDIF()未返回期望值,如何计算月龄?

来自分类Dev

递归函数未在PHP中返回期望值

来自分类Dev

更正此代码,以便greet函数返回期望值

来自分类Dev

c的除法未给出期望值

来自分类Dev

awk OFS未产生期望值

来自分类Dev

当最大值返回NULL时,函数不返回期望值

来自分类Dev

任务ContinueWith不返回期望值

来自分类Dev

标量UDF不返回期望值

来自分类Dev

阿拉伯文化日期时间解析未返回期望值

来自分类Dev

汇总列中的总值时,SQL查询未返回期望值

来自分类Dev

阿拉伯文化日期时间解析未返回期望值

来自分类Dev

字符串枚举未打印期望值

来自分类Dev

Verilog在简单分配中未输出期望值

来自分类Dev

Mockito什么时候/然后不返回期望值

来自分类Dev

preg_match_all不返回期望值

来自分类Dev

嵌套匹配的索引不返回期望值