【问题标题】:C# Recover Int64 from negative Int32C# 从负 Int32 恢复 Int64
【发布时间】:2016-03-15 19:24:43
【问题描述】:

我想恢复这个long 值,它被错误地转换为int

long longValue = 11816271602;
int intValue = (int)longValue; // gives -1068630286
long ActualLong = ?

右移 (intValue >> 32) 的 32 位会得到不正确的结果。

【问题讨论】:

标签: c# parsing integer recover


【解决方案1】:

嗯,初始值

long longValue = 11816271602L; // 0x02C04DFEF2 

5 个字节长。当您将值转换为 4 个字节长的 Int32

int intValue = (int)longValue; // 0xC04DFEF2 (note 1st byte 02 absence)

你不可避免地丢失第一个字节并且不能恢复它。

【讨论】:

    【解决方案2】:

    很遗憾,这是不可能的。如果你看一下二进制表示,你可以看到原因:

    10 1100 0000 0100 1101 1111 1110 1111 0010
    

    如您所见,这个数字有 34 位,而不仅仅是 32 位。

    【讨论】:

      猜你喜欢
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多