Java BigInteger(byte [] val)

时间:2011-06-26 12:11:46

标签: java bytearray biginteger

我试图了解java.math.BigInteger.BigInteger(byte [] val)构造函数是如何工作的。

例如,当我从字节数组[1,0]创建BigInteger实例时,它创建的相应字符串是256.当然,二进制字符串10对应于基数10中的值2.如何将其从10转换为10到256?我错过了什么?

2 个答案:

答案 0 :(得分:4)

它有效地工作在base-256,而不是base-2。因此,输入数组中的每个位置比下一个位置的值高256倍。

的伪代码:

x = 0;
for (i = 0; i < val.length - 1; i++) {
    x = (x*256) + val[i];
}

答案 1 :(得分:4)

数组中的每个字节代表8位,因此[1, 0]相当于1 * 2^(8 * 1) + 0 * 2^(8 * 0),或者二进制:00000001 00000000

请注意BigInteger(byte [])构造函数也使用two's complement,因此不只是添加无符号数:最重要的位会影响符号。