如何修复int溢出?

iTa*_*ayb 0 python integer-overflow

我有一个使用该数字的python代码2637268776(大于sys.maxint32位系统).因此它保存为long类型.

我在我的代码中使用了C++框架绑定,因此我有一个案例,它被转换为int32,导致int32溢出:

2637268776 --> -1657698520
Run Code Online (Sandbox Code Playgroud)

在我的情况下,它只能发生一次,因此可以安全地假设如果整数是负数,我们只有一个int溢出.我怎样才能在数学上反转数字?

NPE*_*NPE 5

总之,你不能.有许多长整数将映射到相同的负数.在您的示例中,这些是2637268776L,6932236072L,11227203368L,15522170664L,19817137960L等.

此外,由于这种溢出,可能得到数.例如,4294967297L将映射到1.