将js转换为C#时出现System.OverflowException

时间:2015-06-26 12:06:01

标签: javascript c# .net

var pin = parseInt(form.mac.value.slice(-6), 16) % 10000000;

我将JS转换为C#,就像这样

var pin = Convert.ToInt16(Networks[NetworkIndex, 0].Substring(Networks[NetworkIndex, 0].Length - 6)) % 10000000;

然后我收到此错误

  

未处理的类型' System.OverflowException'发生在   mscorlib.dll其他信息:值太大或太大   对于Int16来说很小。

3 个答案:

答案 0 :(得分:1)

Int16的值太大了。尝试使用Convert.ToInt32

var pin = Convert.ToInt32(Networks[NetworkIndex, 0].Substring(Networks[NetworkIndex, 0].Length - 6)) % 10000000;

答案 1 :(得分:1)

使用Convert.ToInt32代替Convert.ToInt16。该值太大,无法容纳Int16

Int16值类型表示有符号整数,其值范围从负32768到正32767307650大于32767,因此您应该使用更大的类型来存储值。Int16使用2个字节的内存来存储整数值,Int32将使用4字节,并可以设法存储更大范围的整数。 Int32是一个不可变值类型,表示有符号整数,其值范围从负2,147,483,648到正2,147,483,647。

试试这个

var pin = Convert.ToInt32(Networks[NetworkIndex, 0].Substring(Networks[NetworkIndex, 0].Length - 6)) % 10000000;

答案 2 :(得分:1)

你也可以使用int.TryParse("your number", out int)这不会抛出任何异常(当你在字符串中得到null时)。如果它被解析则表示该值是正确的,或者您可以显式地从代码中抛出异常。

看看。

Int.TryParse