Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# parseInt如何获得其值_C#_Javascript - Fatal编程技术网

C# parseInt如何获得其值

C# parseInt如何获得其值,c#,javascript,C#,Javascript,基于这段代码,我在JavaScript中得到了773855 我浏览了转换表,不知道如何得到这个“773855”值 我的问题是parseint是如何得到这个“773855”值的,因为我想把这个微小的代码翻译成c代码,而c中是否有类似的方法允许我得到这个“773855”值 parseInt('bcedfg',16) 它使用此重载: Convert.ToInt32(theString, 16) 请注意,由于字符串中的g,您将获得FormatException: 格式异常 值包含的字符在fromBa

基于这段代码,我在JavaScript中得到了773855

我浏览了转换表,不知道如何得到这个“773855”值


我的问题是parseint是如何得到这个“773855”值的,因为我想把这个微小的代码翻译成c代码,而c中是否有类似的方法允许我得到这个“773855”值

parseInt('bcedfg',16)
它使用此重载:

Convert.ToInt32(theString, 16)
请注意,由于字符串中的
g
,您将获得
FormatException

格式异常
值包含的字符在fromBase指定的基中不是有效数字。异常消息表示如果值中的第一个字符无效,则没有要转换的数字;否则,该消息表示该值包含无效的尾随字符


javascript中不会出现错误,因为js倾向于“原谅”太多错误,这就是其中的一个例子。bcedfg被解释为十六进制(base:
16
)。然而,十六进制刻度在
f
之后滚动,因此,在javascript中,
g
以及转换之前删除它之后的所有内容。话虽如此,以下是转换的工作原理:

public static int ToInt32(string value, int fromBase)
因此:

知道每个字符位置的十进制值后,只需将它们相加即可获得转换后的十进制值:

b = 11 * 16^4 = 11 * 65536 = 720896
c = 12 * 16^3 = 12 * 4096 = 49152
d = 13 * 16^2 = 13 * 256 = 3328
e = 14 * 16^1 = 14 * 16 = 224
f = 15 * 16^0 = 15 * 1 = 15
C和它的后代在输入时并不那么宽容。C不会删除第一个无效字符以及其后可能出现的任何字符,而是抛出一个。要解决此问题以获得javascript功能,您必须首先删除无效字符,如下所示,然后才能使用:

b(720896) + c(49152) + d(3328) + e(224) + f(15) = 773855

我没有包括删除无效字符的方法,因为有多种方法可以删除无效字符,而且我对C的了解还不够。

这里的问题是“bcedfg”被解释为十六进制(base:16)。但是十六进制刻度在“f”处滚动。这不会因为
g
字符而引发
FormatException
吗?Thx gdoron在Javascript中不会返回错误,但在c中会返回错误,但一旦我删除了g,它就会得到与js..Thx相同的值,用于解释对象的answerThx
b(720896) + c(49152) + d(3328) + e(224) + f(15) = 773855
Convert.ToInt32(input, base)