2012-04-24 44 views
3

我從包含INT32值的外部接口接收到一個字符串。該值表示「-100」 - 一個帶符號的整數 - 因此,看起來像這個字符串「4294967196」。 如果它看起來像「-100」,我可以使用Int32.TryParse()將其轉換爲有符號值。 但在我的情況下,它將解釋值,並告訴我該值太大(> 2.147.483.647)。 任何解決方法,讓這個工作?如何告訴解析器前導1不是數字?C#將字符串解析爲int32 - 值太大

編輯:對不起,對不準確。我收到的值是一個類似於「4294967196」的字符串。它代表一個值爲-100的Uint32。如果接口返回一個字符串「-100」,則可以使用Int32.TryParse()。這就是我想表達的。

+0

'long.TryParse'? – asawyer 2012-04-24 19:49:14

+1

「領先1」是什麼意思? – usr 2012-04-24 19:49:18

+2

'(int)(uint.Parse(「4294967196」))''有什麼問題? – Skiminok 2012-04-24 19:50:14

回答

10

使用uint.TryParse()並將結果轉換爲int

string s = "4294967196"; 
uint ux; 
int x = 0; 
if (uint.TryParse(s, out ux)) 
{ 
    x = (int)ux; 
} 
// x = -100 
+0

真棒thx。但有一個錯字,它應該是(s,out ux)。 – binaryguy 2012-04-24 19:53:40

+0

啊,是的,@Habib先修好了。 – 2012-04-24 19:56:39

+0

值得注意的是,這在檢查的上下文中不起作用,因爲它會引發OverflowException。 – 2012-04-24 21:22:40