在我的代碼中,我需要從註冊表中獲取委內瑞拉的時區。我想要的是「委內瑞拉標準時間」下的指數值。我使用下面的代碼來做到這一點,但似乎不能正常工作。返回的號碼是「-2147483573」,但正確的號碼是「2147483723」。誰能幫助弄清楚什麼是錯的。C#Registry.GetValue無法獲得正確的值
在我的代碼中,我需要從註冊表中獲取委內瑞拉的時區。我想要的是「委內瑞拉標準時間」下的指數值。我使用下面的代碼來做到這一點,但似乎不能正常工作。返回的號碼是「-2147483573」,但正確的號碼是「2147483723」。誰能幫助弄清楚什麼是錯的。C#Registry.GetValue無法獲得正確的值
值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.
嗨,吉姆。我調試了。在那裏運行時,變量t已經是「-2147483573」。 – 2011-03-03 03:45:34
是的,t會因爲溢出而錯誤,但是ut會修復它。 – 2011-03-03 03:47:19
我試過了。 t是「-2147483573」。丟出指定的轉換無效。 – 2011-03-03 03:56:38
註冊表是在的Microsoft.Win32。是與該命名空間有關的錯誤? – 2011-03-03 03:32:35