如何在以下代码中将字符串转换为INT64而不是INT32
public static int TransferClient(string NRIFActual, string NRIFNuevo)
{
int nResult = 0;
try
{
nResult = ws.TransferClient(int.parse(NRIFActual), int.Parse(NRIFNuevo));
}
catch (System.Net.WebException ex)
{
throw new Exception(ex.Message);
}
return nResult;
}
请注意,我需要相同的变量名,因为它在Web服务中使用,是否有办法将其转换为INT64,如int.parse()?
答案 0 :(得分:1)
你可能会得到OverflowException,因为int(Int32)可以存储的值介于-2,147,483,648和2,147,483,647之间。
1)验证您传递的字符串输入是否正确。
2)如果用户不应该插入数字,请尝试在输入中添加验证(文本框)
3)如果用户将(可以)插入更大的数字,您应该使用可以存储更高值的类型 - > long(Int64)应该足够(范围是-9,223,372,036,854,775,808到9,223,372,036,854,775,807),如果不是更大 - >你会在这里找到一个包含C#类型的列表:https://msdn.microsoft.com/ro-ro/library/ya5y69ds.aspx
提示:使用TryParse方法而不是Parse(对于您将使用的任何类型)。此方法将返回一个bool,指出转换是成功还是失败以及输出参数中的实际转换。这将使异常处理变得更加容易。
汉斯评论后编辑:为了保持解决方案简单而不是潜入其他主题,你应该做这样的事情:
string input = "92233720368547758071";
long result;
if (!long.TryParse(input , out result))
/*error handling */
else
/*Continue the flow of your program*/
*输入可能来自任何地方。这只是为了举例。
答案 1 :(得分:0)
当你说你接受了9个号码并希望将其改为10个号码时,我假设你的意思是这个号码长度是9位数,你希望它是10位数。
32位整数的最大大小约为21亿。您可以使用{{1}}代替,这是一个64位整数,最大值为9,223,372,036,854,775,807。