可能重复:
如何在Java中反转int数组?
java中用Array.Reverse(bytearray)C#执行的等效函数是什么?
题:
这段代码用Java:
BigInteger mod = new BigInteger("86f71688cdd2612ca117d1f54bdae029", 16);
Run Code Online (Sandbox Code Playgroud)
产生(在java中)数字
179399505810976971998364784462504058921
Run Code Online (Sandbox Code Playgroud)
但是,当我使用C#时,
BigInteger mod = BigInteger.Parse("86f71688cdd2612ca117d1f54bdae029", System.Globalization.NumberStyles.HexNumber); // base 16
Run Code Online (Sandbox Code Playgroud)
我没有得到相同的号码,我得到:
-160882861109961491465009822969264152535
Run Code Online (Sandbox Code Playgroud)
但是,当我直接从十进制创建数字时,它可以工作
BigInteger mod = BigInteger.Parse("179399505810976971998364784462504058921");
Run Code Online (Sandbox Code Playgroud)
我尝试在字节数组中转换十六进制字符串并将其反转,并从反转数组创建一个大整数,以防万一它是一个具有不同字节序的字节数组,但这没有帮助...
将Java-Code转换为C#时,我也遇到了以下问题:
Java
BigInteger k0 = new BigInteger(byte[]);
Run Code Online (Sandbox Code Playgroud)
要在C#中获得相同的数字,我必须反转数组,因为biginteger实现中的Endianness不同
C#等价物:
BigInteger k0 = new BigInteger(byte[].Reverse().ToArray());
Run Code Online (Sandbox Code Playgroud)