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);
(这是使用隐式UInt32
来BigInteger
转换,并且为其他方式轮显式转换)