在精度损失后从 int 中恢复 long

Recover long from int after precision loss

我继承了一个采用 2281534395476 并错误地将其转换为整数 906761300 的应用程序。我希望从本质上将其取消转换回其正确且正确的 (long) 数据类型。

什么是可以 运行 遍历列表的可重现算法?我正在寻找伪代码或类似的东西,尽管最终结果将写在 Ruby.

当已经从 long 转换为 int 时,根本无法取回值。当您从 long 转换为 int 时,您会丢失一些位。因此,您无法取回这些位,也无法使用通用算法取回丢失的 long 值。

longint 使用相同位数的系统中,转换很简单;它只是复制值。在这种情况下,您可能会取回该值。

longint 宽的系统上,如果 long 值不适合 int,则转换结果为实现定义的。通常发生的情况是高阶位被丢弃。您的系统似乎是这个。因此,您无法取回 long 值。