将 long 转换为整数如何工作?
How does casting long to integer work?
我正在编写一些必须将 long 类型转换为 int 类型的代码。输入以字符串形式出现,实际数字太大而无法立即解析为 int。所以我尝试解析为 long,然后转换为 int,这有效并让我感到困惑,因为我认为它不会。
public void setNum(String Num) {
if (Num != null){
//THIS MAKES NO SENSE **to me** :(
this.Num = (int) Long.parseLong(Num);
} else {
this.Num = -1;
}
}
我已经阅读了我在此处找到的其他几个主题,特别是 this one 虽然它讨论了如何安全地转换它们,但没有解释该过程的工作原理和我很好奇它是怎么做到的。我知道如果 long > Integer.MAX_VALUE 会导致数据在转换时被更改,我仍然对转换的实际工作方式感到困惑。
如果 Long.parseLong(Num)
returns 值高于 Integer.MAX_VALUE
或低于 Integer.MIN_VALUE
,将其转换为 int
将导致不正确的值。
对于正 long,将它们转换为 int 只是意味着将最低 32 位分配给整数变量。我不确定负多头是否相同(我必须检查一下)。
我正在编写一些必须将 long 类型转换为 int 类型的代码。输入以字符串形式出现,实际数字太大而无法立即解析为 int。所以我尝试解析为 long,然后转换为 int,这有效并让我感到困惑,因为我认为它不会。
public void setNum(String Num) {
if (Num != null){
//THIS MAKES NO SENSE **to me** :(
this.Num = (int) Long.parseLong(Num);
} else {
this.Num = -1;
}
}
我已经阅读了我在此处找到的其他几个主题,特别是 this one 虽然它讨论了如何安全地转换它们,但没有解释该过程的工作原理和我很好奇它是怎么做到的。我知道如果 long > Integer.MAX_VALUE 会导致数据在转换时被更改,我仍然对转换的实际工作方式感到困惑。
如果 Long.parseLong(Num)
returns 值高于 Integer.MAX_VALUE
或低于 Integer.MIN_VALUE
,将其转换为 int
将导致不正确的值。
对于正 long,将它们转换为 int 只是意味着将最低 32 位分配给整数变量。我不确定负多头是否相同(我必须检查一下)。