C# sbyte 数组到 BigInteger

C# sbyte array to BigInteger

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

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

有什么解决办法吗? java 中的大整数:78214101938123633359912717791532276502 C# 中的 BigInteger 30381787179362266836169791328776673082

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

翻转你的字节数组。不要投射到 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[]。这不是你想要的。