我继承了一个使用2281534395476
并将其错误地转换为906761300
整数的应用程序。我希望基本上将其转换回正确的(long)
数据类型。
什么是可重现的算法,可以在列表上运行?我正在寻找伪代码或类似的东西,尽管最终结果将用Ruby编写。
答案 0 :(得分:2)
当已经从long
投放到int
时,一个人无法获得价值。当您从long
投射到int
时,您正在丢失一些内容。因此,您无法取回这些位,并且无法通过使用通用算法来获取丢失的long
值。
在long
和int
使用相同位数的系统中,转换很简单;它只是复制价值。在这种情况下,您可以返回值。
在long
宽于int
的系统上,如果long
值不适合int
,则转换结果为实现定义。通常发生的是高位比特被丢弃。你的系统似乎就是这个系统。因此,您无法取回long
值。