2011-03-03 162 views
0

在我的代碼中,我需要從註冊表中獲取委內瑞拉的時區。我想要的是「委內瑞拉標準時間」下的指數值。我使用下面的代碼來做到這一點,但似乎不能正常工作。返回的號碼是「-2147483573」,但正確的號碼是「2147483723」。誰能幫助弄清楚什麼是錯的。C#Registry.GetValue無法獲得正確的值

enter image description here enter image description here

+0

註冊表是在的Microsoft.Win32。是與該命名空間有關的錯誤? – 2011-03-03 03:32:35

回答

3

值0x8000004B比的整數大。你需要把它當作一個無符號整數。

所以:

var t = subKey.GetValue("Index"); 
uint ut = (uint)t; 

再取ut.ToString()

更新後的例子:

int t = -2147483573; // Simulates your call to subKey.GetValue 
uint ut = (uint)t; 
string s = ut.ToString(); 
Console.WriteLine(s); 

輸出是2147483723.

+0

嗨,吉姆。我調試了。在那裏運行時,變量t已經是「-2147483573」。 – 2011-03-03 03:45:34

+0

是的,t會因爲溢出而錯誤,但是ut會修復它。 – 2011-03-03 03:47:19

+0

我試過了。 t是「-2147483573」。丟出指定的轉換無效。 – 2011-03-03 03:56:38