parseInt('bcedfg',16)
根据这段代码,我在JavaScript中得到了773855。
我查看了转换表,不确定如何获得这个“773855”值。
我的问题是,如何使用parseint获取这个“773855”值,因为我想将这个简短的代码翻译成c#代码,是否有类似的方法可以让我获得这个“773855”值。
parseInt('bcedfg',16)
根据这段代码,我在JavaScript中得到了773855。
我查看了转换表,不确定如何获得这个“773855”值。
我的问题是,如何使用parseint获取这个“773855”值,因为我想将这个简短的代码翻译成c#代码,是否有类似的方法可以让我获得这个“773855”值。
bcedfg
被解释为十六进制(基数:16
)。然而,十六进制的范围在f
之后循环,因此在JavaScript中,在转换之前g
和其后面的所有内容都被删除。 说了这些,以下是转换的工作原理:
decValueOfCharPosition = decValueOfChar * base ^ posFromTheRight
所以:
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
一旦您知道每个字符位置的十进制值,只需将它们相加即可得到转换后的十进制值:
b(720896) + c(49152) + d(3328) + e(224) + f(15) = 773855
C语言及其衍生语言在输入方面并不那么宽容。与其只是删除第一个无效字符以及其后跟随的任何字符不同,C会抛出一个格式异常
。为了解决这个问题并实现JavaScript的功能,你必须先移除无效字符及其后面的字符,然后才能使用以下代码:
Convert.ToInt32(input, base)
由于有多种删除无效字符的方法,且我对C语言了解有限,所以我没有包含删除无效字符的方法。
使用 Convert.ToInt32
:
Convert.ToInt32(theString, 16)
public static int ToInt32(string value, int fromBase)
由于JavaScript倾向于“宽容”太多错误,因此您不会在JavaScript中收到错误,这是其中之一的例子。FormatException
值包含一个在fromBase指定的基数中无效的数字字符。 如果value中的第一个字符无效,则异常消息表示没有要转换的数字; 否则,消息指示value包含无效的尾随字符。
g
字符的存在,这不会触发 FormatException
异常吗? - DCoder