C# 从负 Int32 恢复 Int64

Kam*_*dir 1 c# parsing integer recover

我想恢复这个long被错误转换为的值int

long longValue = 11816271602;
int intValue = (int)longValue; // gives -1068630286
long ActualLong = ?
Run Code Online (Sandbox Code Playgroud)

32( intValue >> 32) 的右移位给出了错误的结果。

Dmi*_*nko 5

嗯,初始值

long longValue = 11816271602L; // 0x02C04DFEF2 
Run Code Online (Sandbox Code Playgroud)

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

int intValue = (int)longValue; // 0xC04DFEF2 (note 1st byte 02 absence)
Run Code Online (Sandbox Code Playgroud)

您不可避免地会丢失第一个字节并且无法将其恢复。