C#将字符串解析为int32 - 值太大

时间:2012-04-24 19:46:52

标签: c#

我从外部接口收到一个字符串,其中包含INT32值。此值表示“-100” - 带符号的int - 因此看起来像这个字符串“4294967196”。 如果它看起来像“-100”,我可以使用Int32.TryParse()将其转换为有符号值。 但在我的情况下,它按原样解释值,并告诉我该值太大(> 2.147.483.647)。 让这个工作的任何解决方法?如何告诉解析器前导1不是数字?

修改:抱歉不准确。我收到的值是一个看起来像这个“4294967196”的字符串。它表示Uint32,值为-100。如果接口返回一个包含“-100”的字符串,则可以使用Int32.TryParse()。这就是我想要表达的内容。

1 个答案:

答案 0 :(得分:10)

使用uint.TryParse()并将结果转换为int

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