2012-01-26 82 views
-2

是否有将长整数值8769402740转换为整数并仍然保持原始值的方法。我知道使用 (int)long 但它改变了数字的外观,这就是我想要维护的。将长整数转换为整数而不丢失原始值

+0

使用C#,int表示Int32,所以32位;你给我们的长数字使用33位(十六进制2 0AB2 7774),那么你如何保存价值?你的意思是*号码*的外观? – Marco

+0

改变基地?对数很酷。 – SQLMason

回答

0

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

整数根据大多数情况下使用的处理器的位长而改变。

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

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

2

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

这是不可能的。

Int32.MaxValue值是2,147,483,647。这样你就不能在一个int变量中容纳8,769,402,740

参见Casting and Type Conversions (C# Programming Guide)

对于内置数字类型,可制成的隐式转换时要存储的值可以适合入变量而不截短或舍入。例如,long类型的变量(8字节 integer)可以存储int(32位计算机上的4个字节)可以存储的任何值。如果不丢失数据,反过来是不可能的。

3

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

0

您可以将一个较大的数字“压缩”到较小的数字,请参阅Shannon Limit。但是,您必须维护一种存储该数据的方式。由于Marco给出的理由,你要求的是不平凡的或不可能的。