Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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
在JavaScript中将字符串值解析为十六进制_Javascript_Hex_Parseint - Fatal编程技术网

在JavaScript中将字符串值解析为十六进制

在JavaScript中将字符串值解析为十六进制,javascript,hex,parseint,Javascript,Hex,Parseint,这很奇怪,不是吗?如果我只记得0-9,A,B,C,D,E,F字母代表一个十六进制值。为什么ABCDEFGHAIJ有十六进制表示 正如在评论中提到的,以下是解释此行为的相关部分: 如果parseInt遇到的字符不是 指定的基数,则忽略该基数及其所有后续字符和 返回解析到该点的整数值。parseInt截断 将数字转换为整数值。允许使用前导空格和尾随空格 因此,parseInt(“abcdefghij”,16)将实际解析“abcdef”,并在那里停止。因此,结果是: 0xABCDEF = 112593

这很奇怪,不是吗?如果我只记得0-9,A,B,C,D,E,F字母代表一个十六进制值。为什么ABCDEFGHAIJ有十六进制表示

正如在评论中提到的,以下是解释此行为的相关部分:

如果parseInt遇到的字符不是 指定的基数,则忽略该基数及其所有后续字符和 返回解析到该点的整数值。parseInt截断 将数字转换为整数值。允许使用前导空格和尾随空格

因此,
parseInt(“abcdefghij”,16)
将实际解析
“abcdef”
,并在那里停止。因此,结果是:

0xABCDEF = 11259375
了解这一点后,您可能希望使用一个自定义函数,当使用非十六进制字符串调用时,该函数将返回
NaN

函数parseTrueHexa(str){
返回str.match(/^*[a-f0-9]+*$/i)?parseInt(str,16):NaN;
}
log(“parseInt()表示:”);
log(parseInt(“aBcD”,16));
log(parseInt(“abcdz”,16));
log(“parseturehexa()说:”);
log(parseturehexa(“aBcD”);

log(parseturehexa(“abcdz”)
parseInt(“abcdefghi”,16)
在遇到的第一个非六进制字符时中断。所以,你得到的是
0xABCDEF
如果@Arnauld的评论有…示例哈哈,我认为它在做一些转换,比如比范围大的值从最小的数字开始循环,然后进行一些计算。未尝试检查此项:)“如果parseInt遇到的字符不是指定基数中的数字,它将忽略该字符和所有后续字符,并返回解析到该点的整数值。parseInt将数字截断为整数值。允许使用前导空格和尾随空格。”-