[英]C# Recover Int64 from negative Int32
我想恢復這個被錯誤轉換為int
long
值
long longValue = 11816271602;
int intValue = (int)longValue; // gives -1068630286
long ActualLong = ?
( intValue >> 32
) 右移32
位給出不正確的結果。
嗯,初始值
long longValue = 11816271602L; // 0x02C04DFEF2
是五個字節長。 當您將值轉換為四個字節長的Int32
int intValue = (int)longValue; // 0xC04DFEF2 (note 1st byte 02 absence)
您不可避免地會丟失第一個字節並且無法將其恢復。
不幸的是,這是不可能的。 如果您看一下二進制表示,您可以看到原因:
10 1100 0000 0100 1101 1111 1110 1111 0010
如您所見,這個數字有 34 位,而不僅僅是 32 位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.