Java BigInteger(字节[]val)
我试图理解java.math.biginger.biginger(byte[]val)构造函数是如何工作的Java BigInteger(字节[]val),java,bytearray,biginteger,Java,Bytearray,Biginteger,我试图理解java.math.biginger.biginger(byte[]val)构造函数是如何工作的 例如,当我从字节数组[1,0]创建一个BigInteger实例时,它创建的对应字符串是256。当然,二进制字符串10对应于基数10中的值2。如何将其从10转换为256?我遗漏了什么?它在base-256中有效地工作,而不是base-2。因此,输入数组中的每个位置的值是下一个位置的256倍 伪代码: x = 0; for (i = 0; i < val.length - 1; i++)
例如,当我从字节数组[1,0]创建一个BigInteger实例时,它创建的对应字符串是256。当然,二进制字符串10对应于基数10中的值2。如何将其从10转换为256?我遗漏了什么?它在base-256中有效地工作,而不是base-2。因此,输入数组中的每个位置的值是下一个位置的256倍 伪代码:
x = 0;
for (i = 0; i < val.length - 1; i++) {
x = (x*256) + val[i];
}
x=0;
对于(i=0;i
它在base-256中有效工作,而不是在base-2中。因此,输入数组中的每个位置的值是下一个位置的256倍
伪代码:
x = 0;
for (i = 0; i < val.length - 1; i++) {
x = (x*256) + val[i];
}
x=0;
对于(i=0;i
数组中的每个字节代表8位,因此[1,0]
相当于1*2^(8*1)+0*2^(8*0)
,或者,在二进制中:00000001 00000000
请注意BigInteger(byte[])构造函数也会使用,因此这不仅仅是添加无符号数字的问题:最高有效位会影响符号。数组中的每个字节代表8位,因此
[1,0]
相当于1*2^(8*1)+0*2^(8*0)
,或者,二进制:00000001 00000000
请注意BigInteger(byte[])构造函数也会使用,因此这不仅仅是添加无符号数字的问题:最高有效位会影响符号。什么?那不是意味着
10
值512
吗?@Johan不,“10”表示1*256+0。@Johan:最后一个位置是以1为单位的。倒数第二个元素以256为单位。倒数第三个元素的单位为256*256。等等,什么?那不是意味着10
值512
吗?@Johan不,“10”表示1*256+0。@Johan:最后一个位置是以1为单位的。倒数第二个元素以256为单位。倒数第三个元素的单位为256*256。等