C#从负Int32恢复Int64

时间:2015-12-10 08:40:48

标签: c# parsing int recover

我想恢复这个错误转换为int

的长值
UAC

右移32位(intValue>> 32)给出错误的

2 个答案:

答案 0 :(得分:4)

嗯,初始值

long longValue = 11816271602L; // 0x02C04DFEF2 

五个字节长。当您将值转换为Int32 字节长

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

你不可避免地输掉第一个字节而无法恢复它。

答案 1 :(得分:1)

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

10 1100 0000 0100 1101 1111 1110 1111 0010

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