如何在.net中将long转换为int?

时间:2011-03-04 11:01:24

标签: c# casting

我正在开发silverlight中的window phone 7应用程序。我是窗口手机7应用程序的新手。我有String格式的long值如下

String Am = AmountTextBox.Text.ToString() 

上面代码中的AmountTextBox.Text.ToString()是字符串格式的long值。我想在我的应用程序中存储一个15位数的值。

我找到了以下转换链接。

Can I convert long to int?

我应该如何将字符串格式的long值转换为int?能否请您提供我可以解决上述问题的任何代码或链接?如果我做错了什么,请指导我。

7 个答案:

答案 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); 

对我有用。