我从外部接口收到一个字符串,其中包含INT32
值。此值表示“-100” - 带符号的int - 因此看起来像这个字符串“4294967196”。
如果它看起来像“-100”,我可以使用Int32.TryParse()
将其转换为有符号值。
但在我的情况下,它按原样解释值,并告诉我该值太大(> 2.147.483.647)。
让这个工作的任何解决方法?如何告诉解析器前导1不是数字?
修改:抱歉不准确。我收到的值是一个看起来像这个“4294967196”的字符串。它表示Uint32
,值为-100。如果接口返回一个包含“-100”的字符串,则可以使用Int32.TryParse()
。这就是我想要表达的内容。
答案 0 :(得分:10)
使用uint.TryParse()
并将结果转换为int
。
string s = "4294967196";
uint ux;
int x = 0;
if (uint.TryParse(s, out ux))
{
x = (int)ux;
}
// x = -100