Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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和C中不同的BigInteger值#_Java_C# - Fatal编程技术网

相同字节数组=>;Java和C中不同的BigInteger值#

相同字节数组=>;Java和C中不同的BigInteger值#,java,c#,Java,C#,我有如下Java和C代码: byte[] byteArray = { 52, 51, 102, 100, 55, 48, 48, 48, 57, 97, 57, 55, 97, 55, 100, 51, 49, 49, 99, 53, 54, 52, 52, 48, 52, 55, 99, 99, 99, 55, 48, 48, 102, 56, 100, 48, 56, 97, 57, 100 }; BigInteger byteArrayA

我有如下Java和C代码:

byte[] byteArray = {
          52, 51, 102, 100, 55, 48, 48, 48, 57, 97, 57, 55, 97, 55, 100, 51, 49, 49, 99, 53, 54, 52, 52,
          48, 52, 55, 99, 99, 99, 55, 48, 48, 102, 56, 100, 48, 56, 97, 57, 100
      };
BigInteger byteArrayAsBigInt = new BigInteger(byteArray);
正如您所看到的,这两个数组是相同的。但是为什么Java中的BigInteger构造函数返回的值与C#中的不同呢

byteArrayAsBigInt的Java值:

435547623972009042387221878687981899647773248766318257271173050301525056529400623692496442046820
836240090191738952707023426454050812020217962491637996803829702297801636146665723913243623568180
byteArrayAsBigInt的C#值:

435547623972009042387221878687981899647773248766318257271173050301525056529400623692496442046820
836240090191738952707023426454050812020217962491637996803829702297801636146665723913243623568180

有人知道吗?

答案是,在Java中,假定使用大端序,但在C中,使用小端序

来自Java文档:

public BigInteger(byte[]val)转换包含 将一个大整数的二元补码表示为 大整数。假设输入数组为大端字节顺序字节顺序: 最高有效字节位于第0个元素中

从C#文档:

BigInteger构造函数(字节[]) 类型:System.Byte[] 一个字节值数组,按小尾数顺序排列


我认为这可能与他们存储数据的方式有关。是什么让你认为这两者是一样的?毕竟,它们不是同一个类,不是同一个类库,甚至不是同一种编程语言?