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

C# 如何在.net中将long转换为int?,c#,casting,C#,Casting,我正在silverlight中开发WindowsPhone7应用程序。我不熟悉Windows phone 7应用程序。我有如下字符串格式的长值 String Am = AmountTextBox.Text.ToString() 上面代码中的AmountTextBox.Text.ToString()是字符串格式的长值。我想在我的应用程序中存储一个15位的中间值 我找到了下面的转换链接 如何将字符串格式的长值转换为int?你能提供我任何代码或链接,通过它我可以解决上述问题吗?如果我做错了什么,

我正在silverlight中开发WindowsPhone7应用程序。我不熟悉Windows phone 7应用程序。我有如下字符串格式的长值

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

我找到了下面的转换链接


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

C#中的最大
Int32
值为2147483647,比您需要的15位数字短


是否确实需要将此值转换为int?听起来您最好将该值存储在
中,或者将其保留为
字符串
长值比32整数存储更多数据,因此如果您想保留所有15位数字,则无法转换为标准整数

但是除了要使用的“which”数据类型之外,Convert类还应该帮助您,即Convert.ToInt64,它可以做您想要使用的事情。如果该值对于int太大,那么它将抛出OverflowException


此方法可以获取整个范围的值,包括Int64和字符串。

不能存储15位整数,因为整数的最大值为2147483647

long
-值有什么问题

您可以使用从您的用户输入中获取
long
-值:

String Am = AmountTextBox.Text.ToString();
long l;
Int64.TryParse(Am, out l);
如果文本无法转换为
long
,它将返回
false
,因此使用起来非常安全

否则,将
long
转换为
int
非常简单

int i = (int)yourLongValue;

如果您对放弃MSB并接受LSB感到满意。

您将一个数字存储为
字符串,并希望将其转换为数字类型

您无法将其转换为类型
int
(也称为
Int32
),因为正如其他答案所述,该类型没有足够的范围来存储您的预期值

相反,您需要将该值转换为
long
(也称为
Int64
)。最简单、最轻松的方法是使用,它将数字的字符串表示形式转换为其等效的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);
    }
}
在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)
    };
}

您可以将输入的
long
转换为
Object
,然后将其转换为
int32

Object a = e;
int w = Convert.ToInt32(a); 

它对我很有用。

一个
Int32
只有10个数字(
2147483647
,无符号
4294967295
),你想把另外5个存储在哪里?我在应用程序中使用XML作为数据库。我使用node存储整个15位的值。那么我应该将字符串值转换为长字符串吗?请引导我。我不熟悉这种类型的转换,所以,我猜你真的想将包含数字的
字符串
转换为
长的
?是的,我真的想将字符串转换为长的是的,你是对的。我想我应该把字符串值转换成long。如何做到这一点?你能给我提供一些代码吗?我相信它在实践中是可以的,比如说,十年内用秒除以大量的秒——它突然间不能有意义地超过int32,但原始值可以。