biginteger.intvalue()等价项#

ss2ws0br  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(406)

我试图将java代码翻译成c语言,但在处理biginteger操作时遇到了一个问题。我在c#和intvalue本身中找到了一些关于biginteger实现的参考资料。但是没有关于c#中biginteger.intvalue等价物的线索。java中的定义是:
将此biginteger转换为int。此转换类似于java第5.1.3节中定义的从long到int的缩小原语转换™ 语言规范ification:if this biginteger太大,无法放入整数,只返回低位32位。请注意,此转换可能会丢失有关biginteger值的总体大小的信息,并返回带相反符号的结果。
但是在c中使用(int)得到类似的结果会导致错误:
值对于int32太大或太小。
我也试着只使用低字节,但没有成功如果有人帮助我会很感激的

svdrlsy4

svdrlsy41#

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

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

(这是使用隐式 UInt32BigInteger 转换,以及另一种方式的显式转换)

相关问题