簡體   English   中英

C# 從負 Int32 恢復 Int64

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM