将long转换为整数而不会丢失原始值

时间:2012-01-26 14:25:39

标签: integer long-integer 32-bit value-type type-conversion

有没有办法将长值8769402740转换为整数并仍保持原始值。我知道使用          (int)long 但它改变了数字的外观,这就是我想要保持的。

4 个答案:

答案 0 :(得分:3)

使用C#,int表示Int32,因此管理32位数字 您给我们的长数字使用33位(十六进制 20AB27774 ),因此您无法在转换后保留其值。
因此,您的号码会在32位内被截断,并变为 0AB27774

答案 1 :(得分:2)

考虑到您使用的是C#,因为您没有提及您的编程语言和平台......

这是不可能的。

Int32.MaxValue值为2,147,483,647。这样就无法在int变量中容纳8,769,402,740

请参阅Casting and Type Conversions (C# Programming Guide)

  

对于内置数值类型,当要存储的值 适合 进入变量而不被截断或舍入时,可以进行隐式转换即可。      例如,long类型的变量(8字节   整数)可以存储int的任何值(32位上的4个字节)   电脑)可以存储。如果不丢失数据,则无法进行逆转。

答案 2 :(得分:0)

您需要提供更多信息,例如,您尝试使用哪种语言,以及在哪个平台上?

在大多数情况下,整数会根据所使用的处理器的位长度而变化。

你也可以通过保持外观来解释你的意思吗?

32位版本的Windows上的整数不能容纳值8769402740,因为它太大了。

答案 3 :(得分:0)

您可以将较大数字“压缩”为较小的数字,请参阅Shannon Limit。但是,您必须保持存储该数据的方法。由于Marco的原因,你所要求的要么是非平凡的,要么是不可能的。