我正在开发silverlight中的window phone 7应用程序。我是窗口手机7应用程序的新手。我有String格式的long值如下
String Am = AmountTextBox.Text.ToString()
上面代码中的AmountTextBox.Text.ToString()是字符串格式的long值。我想在我的应用程序中存储一个15位数的值。
我找到了以下转换链接。
我应该如何将字符串格式的long值转换为int?能否请您提供我可以解决上述问题的任何代码或链接?如果我做错了什么,请指导我。
答案 0 :(得分:22)
使用Convert.ToInt32()。如果值对于int来说太大,那么它将抛出OverflowException。
此方法可以采用整个范围的值,包括Int64和字符串。
答案 1 :(得分:12)
您不能存储15位整数,因为整数的最大值是2,147,483,647。
long
- 值有什么问题?
您可以使用TryParse()从您的用户输入中获取long
- 值:
String Am = AmountTextBox.Text.ToString();
long l;
Int64.TryParse(Am, out l);
如果文字无法转换为false
,它将返回long
,因此使用起来非常安全。
否则,将long
转换为int
非常简单
int i = (int)yourLongValue;
如果您对丢弃MSB并使用LSB感到满意。
答案 2 :(得分:2)
您的号码存储为string
,并且您希望将其转换为数字类型。
您无法将其转换为int
类型(也称为Int32
),因为正如其他答案所述,该类型没有足够的范围来存储您的预期价值。
相反,您需要将值转换为long
(也称为Int64
)。最简单,最无痛的方法是使用TryParse
method,它将数字的字符串表示形式转换为64位有符号整数等价物。
使用此方法(而不是类似Parse
)的优点是,如果转换失败,它不会抛出异常。由于例外情况很昂贵,除非绝对必要,否则应避免抛弃它们。相反,您指定包含要转换为该方法的第一个参数的数字的字符串,以及一个out
值,以便在转换成功时接收转换后的数字。返回值是一个布尔值,表示转换是否成功。
示例代码:
private void ConvertNumber(string value)
{
Int64 number; // receives the converted numeric value, if conversion succeeds
bool result = Int64.TryParse(value, out number);
if (result)
{
// The return value was True, so the conversion was successful
Console.WriteLine("Converted '{0}' to {1}.", value, number);
}
else
{
// Make sure the string object is not null, for display purposes
if (value == null)
{
value = String.Empty;
}
// The return value was False, so the conversion failed
Console.WriteLine("Attempted conversion of '{0}' failed.", value);
}
}
答案 3 :(得分:0)
C#中的最大Int32
值为2,147,483,647,短于您需要的15位数。
您确定需要将此值转换为int吗?听起来您最好将值存储在long
中,或将其保留为String
。
答案 4 :(得分:0)
Long值存储的数据多于Integer 32值,因此如果要保留所有15位数,则无法转换为标准Integer。
但是除了你想要使用的'which'数据类型之外,Convert类应该可以帮助你,即Convert.ToInt64可以做你想做的事情
答案 5 :(得分:0)
在C#int
中有32位,long
有64位。因此,long
的所有值都不能为int
。也许得到一组int
s?
public static int[] ToIntArray(long l)
{
var longBytes = BitConverter.GetBytes(l);
// Get integers from the first and the last 4 bytes of long
return new int[] {
BitConverter.ToInt32(longBytes, 0),
BitConverter.ToInt32(longBytes, 4)
};
}
答案 6 :(得分:0)
您可以将输入long
转换为Object
,然后将其转换为int32
。
Object a = e;
int w = Convert.ToInt32(a);
对我有用。