BigInteger.intValue()在C#中等效

c#

我正在尝试将 Java 代码转换为 C#,但在处理 BigInteger 操作时遇到了问题。我找到了一些关于 C# 中 BigInteger 实现和 intValue 本身的资源。但是没有关于 C# 中 BigInteger.intValue 等价物的线索。Java中的定义是:

将此 BigInteger 转换为 int。这种转换类似于 Java™ 语言规范第 5.1.3 节中定义的从 long 到 int 的缩小原始转换:如果此 BigInteger 太大而无法放入 int,则仅返回低 32 位。注意此转换可能会丢失有关 BigInteger 值的整体大小的信息,并会返回具有相反符号的结果

但是在 C# 中使用 (int) 获得类似的结果会导致错误:

对于 Int32,值要么太大要么太小。

我也尝试只使用低字节但没有成功如果有人帮忙,我们将不胜感激

回答

要获得 Java 的行为,请屏蔽值的低位并转换结果:

int result = (int) (uint) (bi & uint.MaxValue);

(这是使用隐式UInt32BigInteger转换,并且为其他方式轮显式转换)


以上是BigInteger.intValue()在C#中等效的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>