parseInt(string, radix)
有2个参数,第一个string
是传入的数值,第二个radix
是传入数值的进制,参数radix
可以忽略,默认为10,各种进制的数转换为 十进制整数(如果不是整数,向下取整)。
radix
的取值范围是2~36,如果radix
为1或radix
>36 ,转换结果将是NaN
,如果radix
为0或其它值将被忽略,radix
默认为 10 。
1 2 3 4 5 6 7 8 9 10 11
| parseInt(0, 1);
parseInt('z', 36);
parseInt('Z', 36);
parseInt('z', 37);
|
实现 function atoi(str, base) {}
atoi(‘123’, 10); // 123
atoi(‘123’, 4); // 27
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| function atoi(str, base) { if (base < 2 || base > 36) { return NaN; } let result = 0; let len = str.length;
function cton(char) { if (/[a-zA-Z]/.test(char)) { char = char.toUpperCase().charCodeAt() - 65 + 10; } else if (/\D/.test(char)) { return NaN; }
return char; } for (let i = 0; i < len; i++) { let char = cton(str.charAt(i)); if (isNaN(char) || char >= base) { len = i; break; } } if (len === 0) { return NaN; } for (let i = 0; i < len; i++) { let char = cton(str.charAt(i)); result += char * Math.pow(base, len - i - 1); } return result; }
|