将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来说很小。
该值对于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
的有符号整数。307650
比32767
大得多,所以你应该使用更大的类型来存储值。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