相关疑难解决方法(0)

如何在java中反转字节数组?

可能重复:
如何在Java中反转int数组?

java中用Array.Reverse(bytearray)C#执行的等效函数是什么?

java

8
推荐指数
2
解决办法
3万
查看次数

Java与C#:BigInteger十六进制字符串产生不同的结果?

题:

这段代码用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)

c# java arrays biginteger endianness

2
推荐指数
1
解决办法
399
查看次数

标签 统计

java ×2

arrays ×1

biginteger ×1

c# ×1

endianness ×1