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