有没有办法将长值8769402740转换为整数并仍保持原始值。我知道使用 (int)long 但它改变了数字的外观,这就是我想要保持的。
答案 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的原因,你所要求的要么是非平凡的,要么是不可能的。