我想恢复这个错误转换为int
的长值UAC
右移32位(intValue>> 32)给出错误的
答案 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位。