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

本文关键字:System OverflowException js 转换 | 更新日期: 2023-09-27 18:00:07

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来说很小。

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

该值对于Int16来说太大。尝试使用Convert.ToInt32

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

使用Convert.ToInt32而不是Convert.ToInt16。该值太大,无法放入Int16

Int16值类型表示值范围从负32768到正32767的有符号整数。30765032767大得多,所以你应该使用更大的类型来存储值。Int16使用2字节的内存来存储整数值,Int32将使用4字节,并且可以存储更大范围的整数。Int32是一个不可变的值类型,它表示值范围从负2147483648到正2147483647的有符号整数。

试试这个

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

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

看一看。

Int.TryParse