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