Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BigInteger(字节[]val)_Java_Bytearray_Biginteger - Fatal编程技术网

Java BigInteger(字节[]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++)

我试图理解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++) {
    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。等