【问题标题】:converting long to integer without losing the original value将 long 转换为整数而不丢失原始值
【发布时间】:2012-02-19 15:07:16
【问题描述】:

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

【问题讨论】:

  • 使用C#,int表示Int32,所以32位;您给我们的长数字使用 33 位(十六进制 2 0AB2 7774),那么您如何保存价值? 出现数字是什么意思?
  • 更换底座?对数很酷。

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


【解决方案1】:

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

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

你能解释一下你所说的保持外表是什么意思吗?

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 字节 整数)可以存储任何整数值(32 位上的 4 个字节) 电脑)可以存储。在不丢失数据的情况下,逆向是不可能的。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        您可以将较大的数字“压缩”为较小的数字,请参阅Shannon Limit。但是,您必须维护一种存储该数据的方法。由于 Marco 给出的原因,您所要求的不是微不足道的就是不可能的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-01-16
          • 2022-01-22
          • 2014-02-02
          • 1970-01-01
          • 2018-10-31
          • 1970-01-01
          • 2013-11-21
          • 1970-01-01
          相关资源
          最近更新 更多