相同字节数组=>;Java和C中不同的BigInteger值#
我有如下Java和C代码:相同字节数组=>;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
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[] 一个字节值数组,按小尾数顺序排列
我认为这可能与他们存储数据的方式有关。是什么让你认为这两者是一样的?毕竟,它们不是同一个类,不是同一个类库,甚至不是同一种编程语言?