C#sbyte数组到BigInteger

时间:2015-11-13 12:15:46

标签: c# type-conversion byte biginteger

enter image description here我必须将sbyte数组转换为BigInteger。我在通用Windows平台上。 BigInteger构造函数只接受byte []而不接受sbyte []。 我不能使用byte [],因为在C#字节中默认是无符号的,并且我得到的值高于128。

sbyte数组是从字节数组转换的,因为当我比较C#返回的BigInteger值与Java中的值不同,因为默认情况下java使用有符号字节而c#使用unsigned。

任何解决方案? Java中的BigInteger:78214101938123633359912717791532276502 C中的BigInteger#30381787179362266836169791328776673082

编辑:我正在尝试从sbyte []数组创建一个BigInteger。我不是想将byte []转换为sbyte []

1 个答案:

答案 0 :(得分:2)

翻转你的字节数组。不要投入sbyte[]。使用byte[]

以下是数组的值(有符号和无符号):

Java值(已签名):58, -41, 124, -12, 24, 102, 14, 93, 79, -102, 72, 47, -62, 81, -37, 22 Java值(无符号):58, 215, 124, 244, 24, 102, 14, 93, 79, 154, 72, 47, 194, 81, 219, 22

C#值(已签名):22, -37, 81, -62, 47, 72, -102, 79, 93, 14, 102, 24, -12, 124, -41, 58
C#值(无符号):22, 219, 81, 194, 47, 72, 154, 79, 93, 14, 102, 24, 244, 124, 215, 58

看看Endianess。如前所述,Java使用big-endian,C#使用little-endian。因此,请翻转byte[]并停止将其转换为sbyte[]。这不是你想要的。